ios - CocoaPods 库中的强dispatch_queue_t

标签 ios objective-c grand-central-dispatch cocoapods

在可能使用 iOS 5.x/OS X 10.7 部署目标或较新版本构建的库中,我在正确定义 dispatch_queue_t 属性时遇到了问题。

大多数情况下我可以按照建议解决它 here :

#if OS_OBJECT_HAVE_OBJC_SUPPORT // == 1 not really needed
@property (nonatomic, strong) dispatch_queue_t loggerQueue; // An Objective-C object
#else
@property (nonatomic, assign) dispatch_queue_t loggerQueue; // A C pointer
#endif

这在手动创建静态库或直接将文件包含在项目中时有效。

当此代码添加到 CocoaPods 库时,它会破坏 iOS 6+/OS X 10.8+ 部署目标。 CocoaPods 正确设置部署目标,编译器设置 OS_OBJECT_HAVE_OBJC_SUPPORT == 1 并选择 strong 定义。但是我收到 iOS 5.x/OS X 10.7 错误:

Property with 'retain (or strong)' attribute must be of object type

我尝试比较 CocoaPods 和静态库之间生成的环境变量,但没有任何可疑之处。

现在我已经通过在使用 CocoaPods 构建时完全禁用 strong 定义来修补它:

#if OS_OBJECT_HAVE_OBJC_SUPPORT && !defined(COCOAPODS)
@property (nonatomic, strong) dispatch_queue_t loggerQueue; // Always disabled
#else
@property (nonatomic, assign) dispatch_queue_t loggerQueue;
#endif

最佳答案

Seems就像旧版 CocoaPods 重新定义了 OS_OBJECT_USE_OBJC ,破坏了 OS_OBJECT_HAVE_OBJC_SUPPORT

我们得到了这个fixed通过检查 OS_OBJECT_USE_OBJC 并使用更新的 CocoaPods。

关于ios - CocoaPods 库中的强dispatch_queue_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267865/

相关文章:

ios - 构造多级dispatchQueue会不会有什么不好的事情发生

ios - 无法在一个 View Controller 上使用两个 UIPickerView

objective-c - sqlite 适用于模拟器,但不适用于设备

ios - 如何在 Objective-C 中以较低的音量播放系统声音?

objective-c - 内存泄漏?还是乐器有毛病?

python - Python à la Grand Central Dispatch 中的并行处理?

ios - RxSwift Realm 在 RunLoop 中观察 Array

ios - WatchKit,阻止用户点击返回

ios - React-native:Axios 不适用于 ios,但适用于 android。错误:NSNull 类型的 JSON 值 '<null>' 无法转换为 NSString

ios - 过渡场景不起作用