在可能使用 iOS 5.x/OS X 10.7 部署目标或较新的部署目标构建的库中,我在正确定义dispatch_queue_t
财产。
大多数情况下我可以按照建议解决它here https://stackoverflow.com/a/24846028/1049134:
#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 错误:
具有“保留(或强)”属性的属性必须是对象类型
我尝试比较 CocoaPods 和静态库之间的结果环境变量,但没有任何可疑之处。
现在我已经通过禁用它来修补它strong
使用 CocoaPods 构建时的完整定义:
#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