Скажем, у вашего 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)
}
Мое предположение - то, что это - контроль в компиляторе. Управление потоком является очень трудной проблемой для получения корректным на любом языке, но особенно на языке как VB, который имеет столько различных механизмов управления потоком. Например,
Если Вы чувствуете сильно об этой проблеме, зарегистрируйте ошибку на Подключении. Мы действительно берем ошибки, зарегистрированные через Подключение очень серьезно, и прилагаем все усилия для фиксации как можно больше.
Они упоминают это в следующем сообщении:
https://stackoverflow.com/questions/210187/usage-statistics-c-versus-vb-net
См. последнее сообщение.
Я предполагаю, что Вы могли использовать FXCop, чтобы проверить Ваш код вместо этого или получить копию Resharper от:
Я хотел бы обратиться к ответу Jared.
Большинство проблем, которые он поднимает, не проблематично для анализа потока данных.
Одно исключение "На Ошибке / Резюме". Они портят анализ потока данных довольно плохо.
Однако это - довольно простая проблема для смягчения:
Если больше чем один оператор "On Error" используется в методе, или оператор "Resume next" используется, можно просто выключить анализ потока данных и сообщить об универсальном предупреждении. Хороший мог бы быть чем-то как "На Ошибке / Резюме удерживается от использования, использует исключения вместо этого".:)
В общем падеже одного единственного оператора "On Error" и никакого оператора "резюме", Вы можете в значительной степени сделать нормальный анализ потока данных и должны получить разумные результаты его.
Большая проблема со способом, которым реализован существующий код DFA. Это не использует график потока управления, и так изменение его заканчивает тем, что было действительно дорогим. Я думаю, хотите ли Вы обратиться к этим видам проблем, Вы действительно должны сорвать существующий код DFA и заменить его чем-то, что использует график потока управления.
AFAIK, Вы корректны, что VB.NET не дает Вам предупреждение. C# делает все же.