2012-06-23 2 views
2

Я был в приложении iOS 5, в котором у меня есть NSOperationQueue, который отлично работает, чтобы получить некоторые данные и создать UIViewController. Однако в какой-то момент, когда каждая операция кажется завершенной, приложение не реагирует на долгое время. Вот как это происходит:Отображение UIViewController, NSOperationQueue

  1. Получить некоторые данные из БД
  2. очереди - Для каждого элемента инициализации объекта пользовательского UIViewController.
  3. Подключите каждый объект 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]; 
} 

Что может быть причиной этого ? Мне что-то не хватает?

Спасибо за помощь!

+0

По моему опыту, действие добавления операции в очередь операций вызывает задержку. Вместо этого я начал использовать performSelectorInBackground. – jerrylroberts

+0

Я бы не создавал экземпляры UIViewController и не добавлял subview в фоновый поток. Получите данные в фоновом режиме, но работайте с элементами пользовательского интерфейса в основном потоке. – Davyd

+0

@jerrylroberts - Yea but performSelectorInBackground означало, что мне приходилось добавлять NSAutoreleasePools и его не так чисто, как очереди ... – glesage

ответ

0

Кажется, что сложность каждого UIViewController задерживала весь процесс.

Мне кажется, что они кажутся простыми, но я думаю, что iPhone не любит создавать 10 представлений одновременно с несколькими кнопками, надписями и изображениями. Упрощение наконечника и обеспечение только того, что используется, выделено и инициализировано, помогло много .. но его все еще не совсем жидкость.

Смежные вопросы