libdispatch AKA Grand Central Dispatch 在哪里导入?

Where is libdispatch AKA Grand Central Dispatch imported?

我正在阅读 Apple's documentation on Concurrency,更具体地说,是关于 NSOperationQueue 与 Dispatch Queue 的对比。

他们这样说:

"An operation queue is the Cocoa equivalent of a concurrent dispatch queue ..."

这让我想知道,如果 NSOperationQueue 通过 Cocoa 框架可用,那么 GCD 如何可用?

当我调用 dispatch_after... 时,为什么我不需要 #import <Cocoa/Cocoa.h>

编译器如何识别 GCD 选择器?

您需要包含 dispatch/dispatch.h 头文件才能使用 GCD API。

dispatch manual:

$ man dispatch
dispatch(3)              BSD Library Functions Manual              dispatch(3)

NAME
     dispatch -- the dispatch framework

SYNOPSIS
     #include <dispatch/dispatch.h>

Cocoa headers 也会导入头文件(例如,NSOperation.h),所以大多数情况下你不需要显式导入头文件。