2016-09-25 2 views
0

Мне нужно написать класс Objcetive-C (тогда объект). Этот объект должен жить в своем потоке, чтобы сделать цикл калькуляции (а затем и все его методы/функции) без влияния на события GUI. есть ли безопасный способ написать такой класс?Objective C Класс/объект в собственной теме

+0

используйте для этого центральную центральную диспетчерскую службу. возможно, это поможет вам: http://jeffreysambells.com/2013/03/01/asynchronous-operations-in-ios-with-grand-central-dispatch – bopa

+0

Вы также должны различать, должен ли ваш объект «жить в своей собственной теме», или что вы действительно хотите, так это то, что вычисление выполняется в собственном потоке. Кроме того, где вы ожидаете результата? В объекте? Или будет блок завершения, чтобы облегчить это? –

ответ

0

Apple использует GCD (Grand Central Dispatch) для обработки потоков в iOS. В вашем случае dispatch_get_global_queue может быть правильной операцией GCD для вашего прецедента. Пример (приведенный от here):

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(backgroundQueue, ^{ 
    while ([self shouldKeepProcessingInBackground]) { 
     [self doBackgroundWork]; 
     usleep(1e4); 
    } 
}) 
+3

Нить никогда не должна запускать цикл все время. Он ест батарею и процессор. Вместо этого блокируйте какой-то механизм сигнализации (из которых GCD предоставляет несколько). – bbum

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

  • Нет связанных вопросов^_^