Как предотвратить замерзание аппликации какао? - PullRequest
3 голосов
/ 06 января 2010
-(void)test
{
  int i;
  for (i=0;i < 1000000;i++)
  {
    //do lengthly operation
  }
}

Как предотвратить зависание графического интерфейса пользователя?

Ответы [ 2 ]

5 голосов
/ 06 января 2010

Итог; не блокируйте основной поток и, следовательно, не блокируйте основной цикл событий.

Теперь вы можете создать поток. Но это не совсем правильный способ написания параллельных программ для Mac OS X.

Вместо этого используйте NSOperation и NSOperationQueue. Он специально разработан для поддержки ваших одновременных потребностей в программировании, хорошо масштабируется, а NSOperationQueue тесно интегрирован в систему так, что он будет контролировать параллелизм на основе доступных системных ресурсов. (количество ядер, загрузка процессора из других приложений и т. д.) более эффективно, чем любое прямое использование потоков.

См. Также Руководство по резьбовому программированию .

0 голосов
/ 06 января 2010

Я бы сделал длительную операцию в отдельном потоке, используя NSThread

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