Concurrency Programming Guide(PDF 版)的第 37 页和第 39 页似乎是矛盾的。在第 37 页中,代码片段指定了以下内容:
if (![anOp isConcurrent])
[anOp start];
else
[NSThread detachNewThreadSelector:@selector(start) toTarget:anOp withObject:nil];
这看起来不错,除了第 39 页的文档指出:
您可以使用调度队列来执行您过去在单独线程上执行的几乎所有任务。调度队列的优点是它们比相应的线程代码更易于使用并且在执行这些任务时效率更高。
那么为什么不调用 detachNewThreadSelector:target:object:,为什么代码不调用 dispatch_async() 呢?