Это зависит от того, что на самом деле производят переменные экземпляра. Общее правило заключается в том, что код, выполняемый фоновым потоком, не должен запускать какие-либо обновления пользовательского интерфейса, такие как view.addSubview(..)
или view.setNeedsLayout
и т. Д., Тогда можно безопасно играть с контроллером вида с использованием фонового потока.
Другим примером могут быть навигационные контроллеры. Например, после того, как контроллер представления был помещен в стек навигации, даже обновление viewController.title
может быть опасным, поэтому вы должны убедиться, что viewController.myProperty = true
не запускает никаких обновлений пользовательского интерфейса. Лично я хотел бы сделать следующие задания в главном потоке, чтобы чувствовать себя в безопасности:
dispatch_async(dispatch_get_main_queue(), {
viewController.title = "My Title"
viewController.myProperty = true
...
})
Короче говоря, вы можете инициализировать новый UIView или UIViewController (или любой UIResponder) в фоновом потоке, однако, вы должны быть изменения каких-либо его свойств, запускающих обновления пользовательского интерфейса в основном потоке. Так создайте в фоновом режиме, но обновите в основном потоке.
Спасибо! :-) Итак, 'MyViewController (nibName: nil, bundle: nil)' не запускает никаких обновлений пользовательского интерфейса? 'viewController.myProperty = true' не имеет побочных эффектов. Это просто свойство. – ma11hew28