Это зависит от того, что на самом деле делают переменные экземпляра. Общее правило заключается в том, что код, выполняемый фоновым потоком, не должен запускать какие-либо обновления пользовательского интерфейса, такие как 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) в фоновом потоке, однако вы должны изменить любое из его свойств, запускающих обновления пользовательского интерфейса в основном потоке. Так что создавайте в фоновом режиме, но обновляйте в основном потоке.
person
ozgur
schedule
22.12.2015
MyViewController(nibName: nil, bundle: nil)
не запускает никаких обновлений пользовательского интерфейса?viewController.myProperty = true
не имеет побочных эффектов. Это простое свойство. - person ma11hew28   schedule 04.11.2015