要想將非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