Помогите мне понять этот фрагмент кода - PullRequest
0 голосов
/ 06 апреля 2011

Я хотел бы знать и понимать этот фрагмент кода

NSOperationQueue *queue = [NSOperationQueue new];
  NSInvocationOperation *operation = [[NSInvocationOperation alloc]
                                        initWithTarget:self
                                         selector:@selector(navigatePage)
                                        object:nil];
  [queue addOperation:operation];
  [operation release];
  [queue release];   


-(void)navigatePage
//==================
{
   [self performSelectorOnMainThread:@selector(loadPageDetails) withObject:nil waitUntilDone:NO];

    [myTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}

Спасибо за ваше время.

1 Ответ

1 голос
/ 06 апреля 2011

Короче говоря, код выглядит как предназначенный для некоторой обработки в фоновом потоке - он, вероятно, извлекает некоторые данные по сети (loadPageDetails), а затем обновляет пользовательский интерфейс с результатами (reloadData). Однако , loadPageDetails вызывается в главном потоке, что я не понимаю - конечно, это должно быть сделано в фоновом потоке, если это занимает много времени?

Можете ли выдать более полный контекст для вашего кода?На самом деле я не вижу смысла в использовании NSInvocationOperation в приведенном выше примере, потому что все, что нужно сделать, - это перенести больше работы на основной поток.

Обычная причина использования фоновой обработки:не блокировать основной поток при выполнении чего-то, что требует времени - я предполагаю, что фрагмент кода, который устанавливает очередь операций, вызывается в основном потоке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...