我想弄清楚如何在Objective-C(iOS)中以不会挂起UI线程的方式执行日志运行任务,有点像背景工作者或TPL 。净。Objective-C中的长时间运行任务C
我正在寻找一种方式来处理这种工作的可维护方式,这被认为是iOS开发的最佳实践?
我想弄清楚如何在Objective-C(iOS)中以不会挂起UI线程的方式执行日志运行任务,有点像背景工作者或TPL 。净。Objective-C中的长时间运行任务C
我正在寻找一种方式来处理这种工作的可维护方式,这被认为是iOS开发的最佳实践?
有很多方法可以做到这一点,如NSThread
,NSOperation
/NSOperationQueue
类或GCD
。示例代码(GCD):
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//background work
});
你可以阅读一下:Concurrency Programming Guide
对于GCD,试试这个测试:(另请参阅苹果的doc亚当和马丁r具有建议
- (IBAction)dispatchQPressed:(id)sender
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=0; i<1000; i++)
{
NSLog(@"Running in background thread concurrently: %i", i);
}
});
for (int i = 0; i<200; i++)
{
NSLog(@"run in main thread:%i", i);
}
}
+1,尽管NSThread应该是最后的手段.GCD更有效地管理线程管理。 – Abizern 2012-07-21 19:02:44
@Abizern同意。 – Adam 2012-07-21 19:06:57