en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.21.2011

在 Xcode 4 中關閉 ARC 的方法

ARC(Automatic Reference Counting)是在 iOS 5 SDK 中才有的新技術,它提供更有效的記憶體管理機制,使用者在撰寫程式時不需要費心手動控制資源取得與釋放的問題,在 ARC 機制中部份跟記憶體有關的指令,像是 Retain、AutoRelease 或是 Release 等等都禁止使用,因為這些都是自動的。但是使用 ARC 機制也會帶來一些潛在的問題,像是將以前的程式碼整合至現有的開發環境中,就會因為 ARC 機制產生許多錯誤,如果你對記憶體掌控有足夠的信心,可以參考下列方法來關閉 ARC 機制。(官方並不建議這麼做)


針對整個專案
關閉專案 ARC 機制的方法只要到專案下的 Build Setting 中找到 Objective-C Automic Reference Counting 項目,將其設定為 NO即可,如下圖。


設定完成之後在專案下所有跟記憶體控制相關的指命都必須回到 iOS 5 SDK 版本以前的寫法,例如 @property 的宣告或是使用 dealloc 函式來做資源釋放。

//使用ARC機制的寫法
@property (weak, nonatomic) IBOutlet UIButton *button;

//未使用ARC機制的寫法
@property (retain, nonatomic) IBOutlet UIButton *button;

//使用ARC機制時並不會產生此函式
- (void)dealloc {
    //釋放資源
}


針對單一檔案
另一方面,如果只是想要關掉專案內特定幾的檔案的 ARC 機制,就可以採用 Flag 旗標設定的方式,首先找到專案 Targes 下的 Build Phase 將 Compile Source 項目展開,點選想要停用 ARC 機制的檔案並按下 RETURN(ENTER),加入 -fno-objc-arc 的旗標設定,如下圖,就可以停用特定檔案的 ARC 機制。







沒有留言:

張貼留言