Я был в приложении iOS 5, в котором у меня есть NSOperationQueue, который отлично работает, чтобы получить некоторые данные и создать UIViewController. Однако в какой-то момент, когда каждая операция кажется завершенной, приложение не реагирует на долгое время. Вот как это происходит:Отображение UIViewController, NSOperationQueue
- Получить некоторые данные из БД
- очереди - Для каждого элемента инициализации объекта пользовательского UIViewController.
- Подключите каждый объект UIViewController к MainViewController и покажите их.
Все идет хорошо, пока не появятся объекты UIVC. Проходит мимо [[self view] addSubview: object.view]; и до конца функции. Но есть огромное отставание от 5 до 30 секунд перед операторами NSLog внутри viewDidApear от UIVC объекта Обнаруживаются ...
Так в коде:
//MainViewController
-(void)displayNewView {
[[self view] addSubview:object.view];
NSLog(@"Done setup");
}
//-- Long unresponsiveness --//
//UIVC object
-(void)viewDidAppear:(BOOL)animated {
NSLog(@"Start appear");
[super viewDidAppear:animated];
}
Что может быть причиной этого ? Мне что-то не хватает?
Спасибо за помощь!
По моему опыту, действие добавления операции в очередь операций вызывает задержку. Вместо этого я начал использовать performSelectorInBackground. – jerrylroberts
Я бы не создавал экземпляры UIViewController и не добавлял subview в фоновый поток. Получите данные в фоновом режиме, но работайте с элементами пользовательского интерфейса в основном потоке. – Davyd
@jerrylroberts - Yea but performSelectorInBackground означало, что мне приходилось добавлять NSAutoreleasePools и его не так чисто, как очереди ... – glesage