在我的 iOS 应用程序中,我在后台线程上运行计算密集型任务,如下所示:
// f is called on the main thread
- (void) f {
[self performSelectorInBackground:@selector(doCalcs) withObject:nil];
}
- (void) doCalcs {
int r = expensiveFunction();
[self performSelectorOnMainThread:@selector(displayResults:) withObject:@(r) waitUntilDone:NO];
}
如何使用 GCD 运行昂贵的计算,使其不会阻塞主线程?
我已经查看dispatch_async
了 GCD 队列选择的一些选项,但我对 GCD 太陌生了,感觉我理解它不够。