要想将非ARC的代码转换为ARC的代码,大概有2种方式:安全
1.使用Xcode的自动转换工具多线程
2.手动设置某些文件支持ARC
框架
1、Xcode的自动转换工具编辑器
Xcode带了一个自动转换工具,能够将旧的源代码转成ARC模式
工具
1.ARC是LLVM 3.0编译器的特性,而现有工程可能使用老的GCC 4.2或LLVM-GCC编译器,所以首先须要设置使用LLVM 3.0编译器:ui
(现使用的XCode4.5,LLVM 3.0已经升级到LLVM 4.1)spa
(现使用的XCode5,LLVM 4.1已经升级到LLVM 5.0).net
最好也选上Warnings中的Other Warning Flags 为 -Wall,这样编译器就会检查全部可能的警告,有助于咱们避免潜在的问题线程
2.Build Options下面的Run Static Analyzer选项也最好启用,这样每次Xcode编译项目时,都会运行静态代码分析工具来检查咱们的代码code
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实际上不会执行任何转换操做。所以最好一次就完成转换,没有转换的文件能够考虑手工进行修改
2、手动开启某些文件的ARC
在Compiler Flags一列加上-fobjc-arc就表示开启这个.m文件的ARC
注意:LLVM会将不能转换的部分标记为错误,要求咱们手动修改。通常NSAutoReleasePool不能自动转换,要手动转为 @autoreleasepool。CF框架的方法也不能自动转换,而release、retain和autorelease是能够自动转换的。咱们将不 能自动转换的错误手动修改好后,编辑器将完成自动转换。好比用static count来处理singletons pattern;用weak来申明delegate pattern;用dispatch_once来保证多线程的安全;在case关键字后面加上大括号{..}来限制case里面申明变量的做用范围等等。
3、禁止某些文件的ARC
在Compiler Flags一列加上-fno-objc-arc就表示禁止这个.m文件的ARC
参考:http://blog.csdn.net/q199109106q/article/details/8565403