在我的课堂上,我有一个dispatch_queue_t
这样声明的属性:
@property (nonatomic, assign) dispatch_queue_t queue;
然后在我的初始化方法中我这样做:
- (id)initWithServerUrls: (NSString*)serverUrls
{
if (self = [super init])
{
_queue = dispatch_queue_create("com.xxx.my_send_queue", DISPATCH_QUEUE_SERIAL);
}
return self;
}
在 Xcode 4.4.1 中它可以工作并且没有引起任何问题(应用程序在应用商店中测试过)。现在,在我升级到 Xcode 4.5 后,应用程序崩溃并出现 EXC_BAD_ACCESS并且 Xcode 在该行给我一个警告说:
将保留对象分配给 unsafe_unretained 变量;分配后对象将被释放
Apple 将 Xcode 4.5 中的编译器从 LLVM 4.0 更新到 LLVM 4.1,但我不知道为什么我的代码现在崩溃了。
我单步执行了代码,崩溃发生在该行之后。你有什么想法可能是错的,我该如何解决?
解决方案:
我设法让它与两个 SDK 一起工作。我刚刚补充说:
#if OS_OBJECT_USE_OBJC
@property (nonatomic, strong) dispatch_queue_t queue; // this is for Xcode 4.5 with LLVM 4.1 and iOS 6 SDK
#else
@property (nonatomic, assign) dispatch_queue_t queue; // this is for older Xcodes with older SDKs
#endif
希望有人觉得它有用