麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(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長(zhǎng)時(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://www.companysz.com/qingche/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精彩视频在线 | 天天干天天碰 | 午夜av男人的天堂 | 在线观看免费污视频 | 国产九色在线播放九色 | 欧美电影在线观看 | 禁漫天堂久久久久久久久久 | 美女擦逼 | 精品一区二区久久久久久久网精 | 欧美成人一级 | 国产精品视频yy9299一区 | 欧美视屏一区二区 | 羞羞答答tv | 亚州视频在线 | 久国久产久精永久网页 | 性爱在线免费视频 | 最近中文字幕一区二区 | chinesexxx少妇露脸 | 99爱视频 | 一级免费黄色 | 主播粉嫩国产在线精品 | 亚洲成人免费影视 | 91一级毛片 | 91精品久久久久久 | 成年人黄色片视频 | 久久久成人免费视频 | gogo全球大胆高清人露出91 | 九九热精品在线播放 | 日本中文字幕网址 | 国产美女的小嫩bbb图片 | 欧美在线 | 亚洲 | 一区二区三区黄色 | 欧美精品久久久久久久久久 | 久久久久久久久久久久久国产精品 | chengrenzaixian| 日韩av手机在线免费观看 | 中文字幕一区久久 | 午夜精品久久久久久毛片 | 主人在调教室性调教女仆游戏 | 久色视频 | 久久伊人国产精品 |