Xcode4.2中的release,retainCount, retain“不能”使用的理解和的解决办法

来源:互联网 发布:广州知伴科技有限公司 编辑:程序博客网 时间:2024/05/17 15:57
Automatic Reference Counting (ARC),自动引用计数,是开发Cocoa程序时的一个编译级别的特性,用于自动内存管理。

  1:在XCode 4.2中,使用模板新建一个工程,该工程将”默认“选择使用ARC特性

  2:对于已经建立好的项目可以 选中项目, Building Settings, 然后找到 Objective C Automatic Reference Counting(找不到,可以搜索到), 设置改为No 就行了.

  ----ARC理论基础---

  ARC的工作原理是,在你编译程序时,将内存操作的代码(retain,release或autorelease)自动添加到需要的位置。即底层上使用和Manual Reference Counting(手工引用计数)一样的内存管理机制,但由于XCode自动帮你在编译时添加内存操作的代码,从而简化了编程的工作。

  启用ARC,编译选项中需加上-fobjc-arc,不过这个由XCode在创建工程模板时帮你完成。

  XCode 4.2以前版本都不支持ARC。

  对操作系统也有要求:Mac OS X v10.6或v10.7 (64-bit applications),iOS4或iOS5。注意:其中Mac OS X v10.6和iOS4不支持weak references(弱引用,后面会说明什么是weak references)。

  Xcode 4.2提供了一个名为“Convert to Objective-C Automatic Reference Counting”的工具,在Edit->Convert menu下,可以帮你自动将使用Manual Reference Counting的老代码转换成使用ARC的新代码(例如去掉对retain和release的调用)。


 iOS5 xcode4.2 引入了ARC (AutomicReferenceCounting) , 使用xcode4.2 新建项目时,会有一些小小的变化。

NSAutoReleasePool  被 @ {Autoreleasepool / / Code for autoreleasepool } block 取代了。

     新增了__strong , __weak 编译指令。

ios5.0知道你的变量在何时需要release,何时需要autorelease,所以变量不要写成全局的,全局的变量用single去代替。

解决办法:在项目中关闭 ARC 功能,在项目属性中将Object-C Automatic Reference Counting设置为NO即可。否则在编译时,会对 release ,retainCount, retain 等内存相关操作在编译时出现红色警告。

如下图:设置为No即可。

ios5 xcode 4.2 中 release 显示编译警告或错误的解决方法




0 0