dispatch_release dispatch_retain 在 最低版兼容本为 6.0 or later 并且使用 ARC 的情况下 error
来源:互联网 发布:小学生的英语软件 编辑:程序博客网 时间:2024/05/17 01:31
对于dispatch_queue_t 对象来说,我们应该这么写
#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.0dispatch_release(_barrierQueue);
#endif
这里的宏 __IPHONE_OS_VERSION_MIN_REQUIRED 就是我们在工程的设置项里设置的 Deployment Target
原因就是 对于最低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
苹果文档原文
Dispatch Queues and Automatic Reference Counting
The behavior of dispatch queues in an automatic reference counting environment varies depending on the deployment target that you choose for a given build target.
- iOS 6 and later—Dispatch objects (including queues) are Objective-C objects, and are retained and released automatically.
- OS X 10.8 and later—Dispatch objects (including queues) are Objective-C objects, and are retained and released automatically.
- Earlier versions—Dispatch objects are custom objects. You must handle the reference counting manually by callingdispatch_retain and dispatch_release.
If you need to use manual reference counting in an ARC-enabled app with a later deployment target (for maintaining compatibility with existing code), you can disable Objective-C-based dispatch objects by adding-DOS_OBJECT_USE_OBJC=0 to your compiler flags.
1 0
- dispatch_release dispatch_retain 在 最低版兼容本为 6.0 or later 并且使用 ARC 的情况下 error
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- iOS 在ARC的情况下成功使用MRC文件
- iOS Block在ARC/非ARC下的使用总结
- iOS Block在ARC/非ARC下的使用总结
- iOS Block在ARC/非ARC下的使用总结
- block在ARC/非ARC下的使用
- iOS 开发中如何在非ARC的情况下编译ARC文件
- 在xib,StoryBoard工程中使用Cocos3D的View,并且使用ARC
- error CS0227: 不安全代码只会在使用 /unsafe 编译的情况下出现
- CentOS6.7直接启动命令行模式(在图形界面没装并且已经设置/etc/initab里的默认值为5的情况下)
- iOS 在不使用cornerRadius的情况下,设置图像为圆角
- iOS 在 ARC 环境下 dealloc 的使用、理解误区
- iOS 在ARC模式下使用MRC的类
- iOS 在ARC模式下使用MRC的工程
- OpenGL学习之统计图形
- win7(64位)平台下Cygwin+Eclipse搭建Hadoop单机开发环境 (二) Hadoop的安装
- Enable PO approval process to send PO in PDF format via email
- 设计模式、框架、架构
- [Qt总结篇]最后总结
- dispatch_release dispatch_retain 在 最低版兼容本为 6.0 or later 并且使用 ARC 的情况下 error
- 1006. Sign In and Sign Out (25)
- 测试
- OgreRoot
- 跟着8张思维导图学习javascript
- 浅析Comet技术在Java Web实时系统开发中的应用
- 减去试块在main
- HDU 4764-Stone(博弈)
- 非预期的例外