国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

iOS-如何將非ARC的項(xiàng)目轉(zhuǎn)換成ARC項(xiàng)目(實(shí)戰(zhàn))

2019-11-14 20:03:39
字體:
供稿:網(wǎng)友

1.前言  

 
因?yàn)楣居袀€(gè)國外餐飲系統(tǒng),編程開發(fā)了3-4年,之前用的都是非ARC,開發(fā)到今年,第一批迭代開發(fā)的人員早已不見,目前發(fā)現(xiàn)了有許多的內(nèi)存泄露之類的,系統(tǒng)沒有自動(dòng)釋放該釋放的內(nèi)存。一旦app長時(shí)間使用,內(nèi)存沒有得到釋放,最后導(dǎo)致app閃崩。涉及到的地方特別多,特別繁雜。故我有了打算將此項(xiàng)目完全轉(zhuǎn)換稱arc項(xiàng)目的意向。經(jīng)過1個(gè)星期的轉(zhuǎn)換與1個(gè)星期的測(cè)試,成功將非arc項(xiàng)目轉(zhuǎn)換稱arc項(xiàng)目。
 
因?yàn)楹苌僬业接泄緦⒋笮屠蟖pp進(jìn)行arc轉(zhuǎn)換,所以網(wǎng)上這方面的資料都特別少。
經(jīng)過這次嘗試,我證明了是可行的。
現(xiàn)在就在博客里總結(jié)一下我遇到的一些問題。
畢竟ARC是objc未來。
 
Xcode 自帶一個(gè)自動(dòng)轉(zhuǎn)換的功能,不過只適合比較小的項(xiàng)目,在大型項(xiàng)目上是不適合適用的,所以我這里是全手動(dòng)轉(zhuǎn)換。
 

2.將項(xiàng)目編譯環(huán)境改成arc   

將紅圈處從No 改成Yes

 

 

如果你現(xiàn)在的工程不支持ARC技術(shù),你可以通過一個(gè)自動(dòng)轉(zhuǎn)換工具來轉(zhuǎn)換你的工程(工具在Edit>Refactor>Convertto Objective-C ARC),這個(gè)工具會(huì)自動(dòng)所有工程中手動(dòng)管理內(nèi)存的點(diǎn)轉(zhuǎn)換成合適自動(dòng)方式的(比如移除retain, release等)。這個(gè)工具會(huì)轉(zhuǎn)換工程中所有的文件。當(dāng)然你可以轉(zhuǎn)換單個(gè)文件。
 
 

3.下面的這些函數(shù):dealloc,retain, release, retainCount, autorelease。禁止任何形式調(diào)用和實(shí)現(xiàn)(dealloc可能會(huì)被實(shí)現(xiàn))  

將這些內(nèi)存管理的東西全部刪掉或注釋

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

作為替代,@autoreleasepool被引入,你可以使用這個(gè)效率更高的關(guān)鍵詞。

 

5.在做橋接轉(zhuǎn)換時(shí)報(bào)錯(cuò),用xcode提示替換  

 

6.ARC語法的一些規(guī)則 

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

6.2.不重載dealloc(如果是釋放對(duì)象內(nèi)存以外的處理,是可以重載該函數(shù)的,但是不能調(diào)用[super dealloc])

6.3.不能使用NSAllocateObject, NSDeallocateObject

6.4.不能在C結(jié)構(gòu)體中使用對(duì)象指針

6.5.id與void *間的如果cast時(shí)需要用特定的方法(__bridge關(guān)鍵字)

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

6.7.不能使用“new”開始的屬性名稱 (如果使用會(huì)有下面的編譯錯(cuò)誤”PRoperty’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”)

 

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

我們項(xiàng)目里可能引用了許多第三方框架。
大部分都是用一些宏來讓代碼可以同時(shí)適應(yīng)arc和非arc的(用#if __has_feature(objc_arc)判斷)。如果代碼量不大,可以考慮自己進(jìn)行改寫
你可以按上面的步驟將第三方框架自己手動(dòng)改稱arc
 
 
如果是大型框架的話,可以采取標(biāo)記此框架保留非arc的環(huán)境不變,繼續(xù)使用。
1,選擇項(xiàng)目中的Targets,選中你所要操作的Target,
2,選Build Phases,在其中Complie Sources中選擇需要ARC的文件雙擊,并在輸入框中輸入:-fobjc-arc,如果不要ARC則輸入:-fno-objc-arc
 
 
 
作者: 清澈Saup
出處: http://m.survivalescaperooms.com/qingche/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄浦区| 毕节市| 南城县| 景洪市| 衢州市| 商洛市| 朝阳区| 定结县| 全椒县| 南城县| 福建省| 观塘区| 天峻县| 宣威市| 淄博市| 贵港市| 康平县| 塔城市| 汉阴县| 湘阴县| 波密县| 来凤县| 辛集市| 天等县| 贵溪市| 巫山县| 麦盖提县| 西乡县| 黄龙县| 新巴尔虎左旗| 玉溪市| 古浪县| 彰化市| 正宁县| 宣恩县| 称多县| 进贤县| 东平县| 安康市| 汉中市| 钟山县|