萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> ios >> 如何將非ARC的項目轉換成ARC項目

如何將非ARC的項目轉換成ARC項目

   如何將非ARC的項目轉換成ARC項目

  Xcode 自帶一個自動轉換的功能,不過只適合比較小的項目,在大型項目上是不適合適用的,所以大型項目上需要全手動轉換。

  1.將項目編譯環境改成ARC

  將紅圈處從No 改成Yes

ios

  如果你現在的工程不支持ARC技術,你可以通過一個自動轉換工具來轉換你的工程(工具在 Edit>Refactor>Convertto Objective-CARC),這個工具會自動所有工程中手動管理內存的點轉換成合適自動方式的(比如移除retain, release等)。這個工具會轉換工程中所有的文件。當然你可以轉換單個文件。

  2.這些函數:dealloc,retain,release,retainCount,autorelease。禁止任何形式調用和實現(dealloc可能會被實現)

  將這些內存管理的東西全部刪掉或注釋

  3.不能使用NSAutoreleasePool。可以考慮直接注釋

  作為替代,@autoreleasepool被引入,你可以使用這個效率更高的關鍵詞。

  4.在做橋接轉換時報錯,用xcode提示替換

  5.ARC語法的一些規則

  5.1.代碼中不能使用retain, release, retain, autorelease

  5.2.不重載dealloc(如果是釋放對象內存以外的處理,是可以重載該函數的,但是不能調用[super dealloc])

  5.3.不能使用NSAllocateObject, NSDeallocateObject

  5.4.不能在C結構體中使用對象指針

  5.5.id與void *間的如果cast時需要用特定的方法(__bridge關鍵字)

  5.6.不能使用NSAutoReleasePool、而需要@autoreleasepool塊

  5.7.不能使用“new”開始的屬性名稱(如果使用會有下面的編譯錯誤”Property’s synthesized getter followsCocoa naming convention for returning ‘owned’ objects”)

  7.第三方包的問題,第三方框架的問題

  我們項目裡可能引用了許多第三方框架。

  大部分都是用一些宏來讓代碼可以同時適應ARC和非ARC的(用#if __has_feature(objc_ARC)判斷)。如果代碼量不大,可以考慮自己進行改寫.

  你可以按上面的步驟將第三方框架自己手動改成ARC。

  如果是大型框架的話,可以采取標記此框架保留非ARC的環境不變,繼續使用。

  1,選擇項目中的Targets,選中你所要操作的Target,

  2,選Build Phases,在其中Complie Sources中選擇需要ARC的文件雙擊,並在輸入框中輸入:-fobjc-ARC,如果不要ARC則輸入:-fno-objc-ARC

copyright © 萬盛學電腦網 all rights reserved