swift调试器:OS_OBJECT_HAVE_OBJC_SUPPORT = 0

时间:2014-10-21 06:51:54

标签: ios swift xcode6

我们迅速的桥接头进口AFNetworking,编译和运行良好;但在调试器中,

po 爆炸抱怨AFNetworking中的几个区域声明dispatch_queue_t属性很强,只要你没有明确地将OS_OBJECT_HAVE_OBJC_SUPPORT定义为0

error: property with 'retain (or strong)' attribute must be of object type
@property (nonatomic, strong) dispatch_queue_t completionQueue;
^

为了确认我的担忧,我将#define OS_OBJECT_HAVE_OBJC_SUPPORT 1放在桥接标题中:

error: Error in auto-import:
failed to get module 'App' from AST context:
/Users/user/oDevelop/App/App-Bridging-Header.h:7:9: warning: 'OS_OBJECT_HAVE_OBJC_SUPPORT' macro redefined
#define OS_OBJECT_HAVE_OBJC_SUPPORT 1
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk/usr/include/os/object.h:58:9: note: previous definition is here
#define OS_OBJECT_HAVE_OBJC_SUPPORT 0

那为什么会这样呢?我现在已经两次验证我们的项目和部署目标是7.0,并且Pod项目和EVERY Pod目标都将部署目标设置为6.0。我尝试手动将AFNetworking pod目标更改为7.0,当然没有效果。

我也尝试过模拟器(8.1)和设备(运行8.0.2)。

1 个答案:

答案 0 :(得分:2)

我有完全相同的问题,我认为我有一个潜在的解决方案:桥接目前似乎不适合使用调度对象(适用于Swift 1.1,Xcode 6.1和更早版本)。

从iOS 6.0开始,调度对象是Objective-C对象(参见Does ARC support dispatch queues?),因此您可以从

更改每个对象
@property (nonatomic, strong) dispatch_queue_t completionQueue;

进入:

@property (nonatomic, strong) id completionQueue;

对AFNetworking中的所有调度对象执行此操作,并在控制台中尝试po之后,它看起来很不错。我不知道这可能导致AFNetworking的任何潜在问题。