ARC开启的情况下是否需要对GCD对象dispatch_release ?
来源:互联网 发布:初中生网络兼职 编辑:程序博客网 时间:2024/06/04 19:40
对于dispatch_queue_t 对象来说,我们应该这么写
#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
dispatch_release(_barrierQueue);
#endif
当然了,也可以使用
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 // 6.0sdk之前dispatch_release(_barrierQueue);
#endif
这里的宏 __IPHONE_OS_VERSION_MIN_REQUIRED 就是我们在工程的设置项里设置的最低部署sdk版本
原因就是 对于最低sdk版本>=ios6.0来说,GCD对象已经纳入了ARC的管理范围,我们就不需要再手工调用 dispatch_release了,否则的话,在sdk<6.0的时候,即使我们开启了ARC,这个宏OS_OBJECT_USE_OBJC 也是没有的,也就是说这个时候,GCD对象还必须得自己管理
如果你部署的最低目标低于 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 ordispatch_release
0 0
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- dispatch_release dispatch_retain 在 最低版兼容本为 6.0 or later 并且使用 ARC 的情况下 error
- 开启arc之后 NSNotificationCenter removeObserver 是否需要调用?
- 在非ARC项目中引用ARC对象,是否需要手动释放
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- 在wifi开启的情况下 判断GPRS数据流量是否打开
- 在什么情况下需要开启“反交织”模式?
- 非ARC情况下---用GCD实现单例模式
- cocos2d的ARC开启
- 如何在一个开启了ARC的工程里使用不支持ARC的对象
- 如何在一个开启ARC的工程里使用不支持ARC的对象
- ARC写的代码 外部非ARC环境调用时到底是否需要release
- 用wget直接下载oracle java jdk (7u45)
- Linux查看端口使用状态、关闭端口方法
- 如何使用“没有公钥,无法验证签名“的软件源
- 基于visual Studio2013解决面试题之0301累加
- 关闭对话框
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- 运营商路由器和交换机市场今年有望达202亿美元
- (转)cocos2d-x学习笔记09:动作2:持续动作
- 用Delphi编写蠕虫病毒浅析(安全小组必看)
- 在单线程模型中Message、Handler、MessageQueue、Looper之间的关系
- 《30天自制操作系统》学习笔记--Mac下工具的使用
- 输入公历得到农历
- Android音频系统之AudioFlinger(一)
- 合理设置apache httpd的最大连接数