1.自己的舊項(xiàng)目沒(méi)有使用ARC,但是引入的第三方庫(kù)卻是使用了ARC的。
2.自己的新項(xiàng)目使用了ARC,但是引入的第三方庫(kù)或者以前寫(xiě)的代碼卻沒(méi)有使用ARC狰贯。
這兩種情況下,直接肯定是通不過(guò)編譯的赏廓『桑可以通過(guò)升級(jí)舊項(xiàng)目,讓其使用ARC來(lái)解決幔摸,但這個(gè)辦法有時(shí)候會(huì)很麻煩摸柄。
有一個(gè)簡(jiǎn)單的辦法就是,可以指定單個(gè)文件是否采用ARC來(lái)進(jìn)行編譯既忆。
方法就是在Build Phase里面的Compile Source里面找到需要特殊處理的文件驱负,加上編譯選項(xiàng)(Compiler Flags),具體針對(duì)上面兩種情況有所區(qū)別患雇。
- 對(duì)于第一個(gè)情況跃脊,給采用了ARC的源文件,添加-fobjc-arc選項(xiàng)
2 )對(duì)于第二種情況庆亡,添加-fno-objc-arc
此外匾乓,xcode貌似有點(diǎn)問(wèn)題捞稿,在點(diǎn)擊某個(gè)源文件的Compiler Flags條目的時(shí)候又谋,應(yīng)該顯示光標(biāo)的地方卻什么也沒(méi)有提示,輸入字符也沒(méi)有echo娱局,只有敲完之后彰亥,選擇其它文件才能看到添加的編譯選項(xiàng)···這真無(wú)語(yǔ)。衰齐。
對(duì)于新寫(xiě)的各種插件任斋,可以這么干:
-(void)dealloc{
//do something in common#if !__has_feature(objc_arc)
[super dealloc];#else
//nothing#endif}
讓它在arc和非arc都可用。