要想将非arc的代码转换为arc的代码,大概有2种方式:
1.使用xcode的自动转换工具
2.手动设置某些文件支持arc
一、xcode的自动转换工具
xcode带了一个自动转换工具,可以将旧的源代码转成arc模式
1.arc是llvm 3.0编译器的特性,而现有工程可能使用老的gcc 4.2或llvm-gcc编译器,因此首先需要设置使用llvm 3.0编译器:
(现使用的xcode4.5,llvm 3.0已经升级到llvm 4.1)

最好也选上warnings中的other warning flags 为 -wall,这样编译器就会检查所有可能的警告,有助于我们避免潜在的问题
2.build options下面的run static analyzer选项也最好启用,这样每次xcode编译项目时,都会运行静态代码分析工具来检查我们的代码
3.设置"objective-c automatic reference counting"选项为yes,不过xcode自动转换工具会自动设置这个选项,这里只是说明一下如何手动设置
4.打开xcode的自动转换工具
5.xcode会显示一个新窗口,让你选择哪些文件需要转换
点击check按钮,xcode可能会弹出对话框提示项目不能转换为arc,需要你准备好转换(这里暂时省略详细说明)
6.如果没有什么警告、错误了,就会弹出一下提示窗口:
7.点击next,几秒钟后,xcode会提示所有文件的转换预览,显示源文件的所有改变。左边是修改后的文件,右边是原始文件。在这里你可以一个文件一个文件地查看xcode的修改,以确保xcode没有改错你的源文件:
点击save即可完成转换
8.自动转换之后,xcode会移除所有retain、release、autorelease调用,这可能会导致代码出现其它警告、无效语法等,这些都需要自己手工进行修改
注意:xcode的自动转换工具最好只使用一次,多次使用可能会出现比较诡异的问题。假如你第一次转换没有转换所有的文件,当你稍后试图再次转换剩余的文件时,xcode实际上不会执行任何转换操作。因此最好一次就完成转换,没有转换的文件可以考虑手工进行修改
二、手动开启某些文件的arc
在compiler flags一列加上-fobjc-arc就表示开启这个.m文件的arc
三、禁止某些文件的arc
在compiler flags一列加上-fno-objc-arc就表示禁止这个.m文件的arc