ARC(Automatic Reference Counting)是在 iOS 5 SDK 中才有的新技術,它提供更有效的記憶體管理機制,使用者在撰寫程式時不需要費心手動控制資源取得與釋放的問題,在 ARC 機制中部份跟記憶體有關的指令,像是 Retain、AutoRelease 或是 Release 等等都禁止使用,因為這些都是自動的。但是使用 ARC 機制也會帶來一些潛在的問題,像是將以前的程式碼整合至現有的開發環境中,就會因為 ARC 機制產生許多錯誤,如果你對記憶體掌控有足夠的信心,可以參考下列方法來關閉 ARC 機制。(官方並不建議這麼做)
針對整個專案
關閉專案 ARC 機制的方法只要到專案下的 Build Setting 中找到 Objective-C Automic Reference Counting 項目,將其設定為 NO即可,如下圖。
關閉專案 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 機制。
沒有留言:
張貼留言