Если простая инициализация TableDemoViewController - это то, что так интенсивно, у вас есть другие проблемы. Помните, что основной поток является синхронным, как вы указали. У вас есть пара вариантов:
- Вполне возможно, что простое вращение цикла выполнения после добавления счетчика решит вашу проблему. Вы можете сделать это, разделив ваш метод на две части и вызвав вторую часть с инициализацией TableDemoViewController из
performSelector:withObject:afterDelay:
с задержкой 0.
- Вы, вероятно, хотите выяснить, почему init так дорог, и убрать это из основного потока. Я настоятельно рекомендую узнать, как использовать NSOperations и NSOperationQueue. Вы можете использовать шаблон делегата или NSNotificatin, чтобы сообщить вызывающим абонентам, когда ваша дорогая операция выполнена.
В общем, если у вас есть что-то, что блокирует обработку в главном потоке, как это, это плохо. Вы хотите перенести это из основного потока как можно скорее. Основной поток - это место, где происходят входные события и анимации - способность основного потока свободно работать - вот что делает ваше приложение отзывчивым и быстрым. Помните, что даже если пользователь не может улучшить состояние вашего приложения, он, вероятно, может многое из того, с чем он может взаимодействовать, и многое из того, что он может видеть.