标签:
当不想使用CocoaPods来管理和使用第三方库的时候,就需要手动添加和配置这些第三方库,难免会出现一些问题,主要问题汇总如下:
1、AFNetworking、NKNetWork、ZxingObjC等第三方库为了支持低版本的系统(IOS 5,6)会出现不能编译如下代码
@property (nonatomic, strong)dispatch_queue_t
这是因为,当IOS SDK版本>=6.0时,ARC会管理GCD对象,当IOS SDK版本<6.0时,GCD是需要手动管理的,兼容则需要写如下代码
//声明属性时 #if OS_OBJECT_USE_OBJC @property (strong, nonatomic) dispatch_queue_t barrierQueue; #else @property (assign, nonatomic) dispatch_queue_t barrierQueue; #endif //在dealloc方法中应该加上 #if !OS_OBJECT_USE_OBJC //这个宏是在sdk6.0之后才有的,如果是之前的,则OS_OBJECT_USE_OBJC为0 dispatch_release(_barrierQueue); #endif //当然了,也可以使用 #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 // 6.0sdk之前 dispatch_release(_barrierQueue); #endif // __IPHONE_OS_VERSION_MIN_REQUIRED 是在工程最低部署sdk版本 // OS_OBJECT_USE_OBJC 这个宏是在SDK6.0之后才有的,若是6.0之前则为0
如果你部署的最低目标低于 iOS 6.0 or Mac OS X 10.8
你应该自己管理GCD对象,使用(dispatch_retain,dispatch_release),ARC并不会去管理它们
如果你部署的最低目标是 iOS 6.0 or Mac OS X 10.8 或者更高的
ARC已经能够管理GCD对象了,这时候,GCD对象就如同普通的OC对象一样,不应该使用dispatch_retain 或 dispatch_release
标签:
原文地址:http://www.cnblogs.com/nmzd/p/4645026.html