在可能使用 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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |