Get*_*tsy 2 iphone concurrency
我想从主线程创建一个单独的线程,并在那里做一些进程.例如:当我浏览我的应用程序屏幕(导航控制器,视图控制器等)时,我还希望在后台进行一些上传过程中的另一个线程.
我如何在iOS开发中实现这一目标?请指导我.
谢谢!
有很多选项,太多无法详尽列出,但也许最简单的方法来孵化一个额外的线程是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及更高版本,那么请检查出来.
| 归档时间: |
|
| 查看次数: |
4118 次 |
| 最近记录: |