首先看下 OS_OBJECT_USE_OBJC個宏定義常見用處

出現這段代碼的原因是 GCD中的對象在6.0之前是不參與ARC的,而6.0之后 在ARC下使用GCD也不用關心釋放問題
在之后的SDK中 都是定義了OS_OBJECT_USE_OBJC這個宏的 如下為 9.1 sdk中 系統源碼截圖:

所以我們可以直接這么寫:
@property (noatomic,strong) dispatch_queue_t queue;
擴展介紹:
現在cocopods很火,不少開源的第三方組件 向下兼容性也很好(支持6.0、甚至更早的版本4.x)
在寫spec文件過程中,經常忽略如下設置:
或者
若忽略配置版本,將兼容更舊的系統版本;這樣在編譯配置中將出現 -DOS_OBJECT_USE_OBJC=0 關閉宏定義
例:
這個問題cocopods官方有介紹 :https://guides.cocoapods.org/syntax/podspec.html#deployment_target
