2016-09-25 56 views
0

我需要编写一个Objcetive-C类(然后是一个对象)。这个对象必须存在于自己的线程中,以便计算循环(以及所有的方法/函数),而不受GUI事件的影响。有没有一种安全的方式来写这样的课程?Objective C类/自己线程中的对象

+0

使用Grand Central Dispatch为此。也许这可以帮助你: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

线程不应该始终运行循环。它吃电池和CPU。相反,阻止某种信号机制(其中GCD提供了几种信号机制)。 – bbum