VB Недостижимая ошибка в коде / предупреждение

Скажем, у вашего AViewModel есть поток данных, интересующих ваших детей:

protocol AViewModel {
    let importantDataStream: Observable<SomeData> { get }
}

А у вашего ParentVC есть ссылка на его модель вида:

var viewModel: AViewModel

Тогда Вы можете объявить протокол:

protocol ImportantDataListener {
    func subscribe(to stream: Observable<SomeData>)
}

И B, и C будут соответствовать этому протоколу.

Затем мы меняем объявление функции add(asChildViewController ...) следующим образом:

func add(asChildViewController viewController: UIViewController & ImportantDataListener) {
    // Add Child View as Subview
    containerView.addSubview(viewController.view)

    // Configure Child View
    viewController.view.frame = view.bounds
    viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    // Passing stream
    viewController.subscribe(to: viewModel.importantDataStream)
}
5
задан Binary Worrier 13 April 2009 в 19:26
поделиться

4 ответа

Мое предположение - то, что это - контроль в компиляторе. Управление потоком является очень трудной проблемой для получения корректным на любом языке, но особенно на языке как VB, который имеет столько различных механизмов управления потоком. Например,

  • Исключения
  • Goto
  • На Ошибке (Резюме, Goto, и т.д....)
  • Вызовы выхода

Если Вы чувствуете сильно об этой проблеме, зарегистрируйте ошибку на Подключении. Мы действительно берем ошибки, зарегистрированные через Подключение очень серьезно, и прилагаем все усилия для фиксации как можно больше.

4
ответ дан 14 December 2019 в 13:47
поделиться

Они упоминают это в следующем сообщении:

https://stackoverflow.com/questions/210187/usage-statistics-c-versus-vb-net

См. последнее сообщение.

Я предполагаю, что Вы могли использовать FXCop, чтобы проверить Ваш код вместо этого или получить копию Resharper от:

http://www.jetbrains.com/resharper/

1
ответ дан 14 December 2019 в 13:47
поделиться

Я хотел бы обратиться к ответу Jared.

Большинство проблем, которые он поднимает, не проблематично для анализа потока данных.

Одно исключение "На Ошибке / Резюме". Они портят анализ потока данных довольно плохо.

Однако это - довольно простая проблема для смягчения:

Если больше чем один оператор "On Error" используется в методе, или оператор "Resume next" используется, можно просто выключить анализ потока данных и сообщить об универсальном предупреждении. Хороший мог бы быть чем-то как "На Ошибке / Резюме удерживается от использования, использует исключения вместо этого".:)

В общем падеже одного единственного оператора "On Error" и никакого оператора "резюме", Вы можете в значительной степени сделать нормальный анализ потока данных и должны получить разумные результаты его.

Большая проблема со способом, которым реализован существующий код DFA. Это не использует график потока управления, и так изменение его заканчивает тем, что было действительно дорогим. Я думаю, хотите ли Вы обратиться к этим видам проблем, Вы действительно должны сорвать существующий код DFA и заменить его чем-то, что использует график потока управления.

1
ответ дан 14 December 2019 в 13:47
поделиться

AFAIK, Вы корректны, что VB.NET не дает Вам предупреждение. C# делает все же.

0
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: