iPhone:创建另一个线程并执行一些过程

Get*_*tsy 2 iphone concurrency

我想从主线程创建一个单独的线程,并在那里做一些进程.例如:当我浏览我的应用程序屏幕(导航控制器,视图控制器等)时,我还希望在后台进行一些上传过程中的另一个线程.

我如何在iOS开发中实现这一目标?请指导我.

谢谢!

Tom*_*mmy 7

有很多选项,太多无法详尽列出,但也许最简单的方法来孵化一个额外的线程是performSelectorInBackground:withObject : ,例如

[self performSelectorInBackground:@selector(doSomething:) withObject:nil];

- (void)doSomething:(id)object
{
    NSLog(@"I'm running on a separate thread!");
}
Run Code Online (Sandbox Code Playgroud)

还有performSelectorOnMainThread:withObject:waitUntilDone:用于将事物推回到UIKit的主线程以及将选择器调度到特定其他线程的各种其他方法.

如果要调整优先级或以更特定的方式填充线程,可以直接与NSThread通信.在任何一种情况下都要小心,因为除非你自己创建一个自动释放池,否则你的后台线程中没有自动释放池.

如果您计划发布大量线程,则可能会将NSInvocationOperations推送到NSOperationQueue.操作队列确保以最佳方式将操作分配给后台线程,以获得设备所具有的CPU和内核数量.

你应该完全确定你想要一个后台线程.作为一般的经验法则,如果某些东西能够同步或异步运行,则发布到主线程,后者是更有效的方法,特别是在电池寿命方面.新的基于块的异步方法占用了大量的意大利面,而不是编写事件驱动的代码,它应该执行一个简单的线性动作,所以如果你可以坚持使用iOS 4及更高版本,那么请检查出来.