欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

iOS優(yōu)化內(nèi)存,提升性能之三-創(chuàng)新互聯(lián)

高級(jí)內(nèi)存主題

創(chuàng)新互聯(lián)主營(yíng)長(zhǎng)沙縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開(kāi)發(fā)定制,長(zhǎng)沙縣h5微信小程序搭建,長(zhǎng)沙縣網(wǎng)站營(yíng)銷(xiāo)推廣歡迎長(zhǎng)沙縣等地區(qū)企業(yè)咨詢(xún)

現(xiàn)在你已經(jīng)學(xué)會(huì)了基本的內(nèi)存管理技術(shù),我講介紹一些高級(jí)內(nèi)存主題。

Retain/Relationship生命周期

在舊的內(nèi)存管理世界中,如果對(duì)象A擁有對(duì)象B,當(dāng)對(duì)象Adeallocated時(shí),對(duì)象A必須release對(duì)象B。但是,如果對(duì)象A擁有對(duì)象B,對(duì)象B又擁有對(duì)象A,會(huì)發(fā)生什么呢?

你可以通過(guò)調(diào)用release方法,然后把引用設(shè)置為nil來(lái)release對(duì)象A。但是,因?yàn)閷?duì)象B仍然擁有對(duì)象A,對(duì)象A的引用計(jì)數(shù)大于0。當(dāng)你release對(duì)象B的時(shí)候同樣如此;它的引用計(jì)數(shù)仍然大于0,因?yàn)閷?duì)象A仍然擁有對(duì)象B。

類(lèi)似這樣的引用,任何對(duì)象都不會(huì)被deallocated,如圖7-4展示的那樣。

iOS優(yōu)化內(nèi)存,提升性能 之三

對(duì)于新的ARC機(jī)制,這種引用依然存在,如果你有兩個(gè)對(duì)象互相之間有強(qiáng)引用,兩個(gè)對(duì)象都會(huì)泄露。

因此,如果你想兩對(duì)象彼此應(yīng)用,你需要怎么做呢?你需要使用弱引用。

弱引用

iOS優(yōu)化內(nèi)存,提升性能 之三

因此,為了避免循環(huán)引用,只有對(duì)象A持有對(duì)象B的強(qiáng)引用,對(duì)象B只持有對(duì)象A的弱引用。

UIViewController

所有的iPhone應(yīng)用都要用到UIViewController(要不然你在哪里顯示UI?)。因此,理解UIViewController的生命周期能夠幫助你很多重要的事情,例如:

  • 更好的利用內(nèi)存

  • 避免內(nèi)存泄露

  • 提高響應(yīng)

在教學(xué)和培訓(xùn)的時(shí)候,我發(fā)現(xiàn)很多開(kāi)發(fā)者對(duì)view controller存在嚴(yán)重的誤解,他們并沒(méi)有理解view controller的生命周期。在iPhone環(huán)境中,有一些主要的管理過(guò)程來(lái)控制view controller對(duì)象的生命周期,例如:

  • 加載view

  • 當(dāng)系統(tǒng)需要回收內(nèi)存時(shí)卸載view

  • release view

  • 從UI中顯示或隱藏view

加載view的過(guò)程

當(dāng)一個(gè)view controller請(qǐng)求它的view的時(shí)候,它會(huì)檢查view是否已經(jīng)加載到內(nèi)存中。如果沒(méi)有,會(huì)加載它然后viewDidLoad方法會(huì)被調(diào)用。圖7-6顯示了加載view的過(guò)程。

iOS優(yōu)化內(nèi)存,提升性能 之三

在加載view的過(guò)程中,你需要記住一些性能方面的問(wèn)題:

  • 如果你重寫(xiě)了loadView方法,你需要?jiǎng)?chuàng)建view的層次結(jié)構(gòu)來(lái)顯示UI。這會(huì)導(dǎo)致輕量級(jí)的性能提升,因?yàn)椴恍枰獜膎ib文件加載。

  • 如果你沒(méi)有重寫(xiě)loadView方法,iOS環(huán)境會(huì)自動(dòng)的查找你指定的nib文件或和view controller同名的nib文件。使用nib文件比較好維護(hù)同時(shí)它有拖拉的功能。

  • 如果沒(méi)有匹配到任何東西,iOS環(huán)境會(huì)創(chuàng)建一個(gè)新的空的view,然后返回這個(gè)空的view。

卸載view的過(guò)程

對(duì)于內(nèi)存和性能來(lái)說(shuō),這個(gè)過(guò)程是非常重要的。主要原因是當(dāng)你的應(yīng)用有內(nèi)存警告和需要回收內(nèi)存時(shí),這個(gè)過(guò)程依然在運(yùn)行。在這個(gè)過(guò)程中,didReceiveMemoryWarning方法首先被調(diào)用,然后viewDidUnload方法被調(diào)用。在屏幕上顯示的views不會(huì)被卸載。在圖7-7中你可以看到這個(gè)過(guò)程。

iOS優(yōu)化內(nèi)存,提升性能 之三

在卸載view的過(guò)程中,有很多內(nèi)存和性能方面的問(wèn)題你需要記?。?/p>

  • 確保當(dāng)方法didReceiveWarning被調(diào)用時(shí),你要清除一些重量級(jí)對(duì)象的內(nèi)存緩存,比如圖片緩存。如果你不這樣做的話,iOS系統(tǒng)會(huì)強(qiáng)制關(guān)閉你的應(yīng)用,這是一個(gè)非常糟糕的用戶體驗(yàn)。

  • 這時(shí)你不應(yīng)該清除或release任何view,因?yàn)檫@是不安全的。相反,你應(yīng)該調(diào)用[super didReceiveWarning],這樣父類(lèi)能夠檢查release這個(gè)subview是否安全。

  • 如果release它的view是安全的,方法viewDidUnload會(huì)被調(diào)用。你可以選擇重寫(xiě)這個(gè)方法來(lái)一些你需要的清理工作。

注意:當(dāng)你重寫(xiě)加載view的方法時(shí),如init,loadView和viewDidload,必須先調(diào)用父類(lèi)的方法。但是,如果你重寫(xiě)清除方法,如didReceiveWarning,viewDidUnload或dealloc,調(diào)用父類(lèi)的方法必須在方法的尾部。

在viewDidUnload方法中有一些開(kāi)發(fā)者感到很迷惑的東西。

  • viewDidLoad和LviewDidUnload不是相互對(duì)應(yīng)的。viewDidLoad是在view controller初始化和請(qǐng)求view之后調(diào)用的。viewDidUnload是在收到內(nèi)存警告時(shí)調(diào)用的。在調(diào)用viewDidUnload方法之后,不會(huì)調(diào)用view controller對(duì)象的dealloc方法。卸載的view將會(huì)被deallocated。

  • 在viewDidUnload中,你只能清除你的views;其他對(duì)象將在didReceiveWarning方法中被清除或release。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:iOS優(yōu)化內(nèi)存,提升性能之三-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://aaarwkj.com/article24/phgje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站改版、云服務(wù)器電子商務(wù)、網(wǎng)站排名、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
久久热福利视频就在这里| 亚洲国产日韩伦中文字幕| 久久精品资源综合网| 97乱碰视频在线观看| 欧美成人黄片免费播放| 国产91黑丝在线播放| 午夜性生活免费观看视频| 国产亚洲加勒比久久精品| 免费亚洲网站在线观看视频| 国产人妖cd蜜雅丝袜美女| 国家成人午夜在线观看| 日本一区二区 视频| 国产精品免费看片网站| 這裏隻有无码人妻久久| 成人国产精品2021| 日韩亚洲av在线免费观看| 欧美日韩性生活视频在线 | 久久亚洲综合精品人妻| 日韩成人中文字幕电影| 门国产av一区二区三区| 精品人妻中文av一区二区| 亚洲欧美半夜激情一区二区| 日韩少妇黄色在线观看| 天美传媒剧国产在线观看| 国产三级网站在线观看| 青青草国产成人自拍视频在线观看| 国产日韩精品在线视频| 日韩性视频激情在线一区| 国产熟乱老女人露脸视频| 乱码日本欧美一区二区| 九九九视频在线观看免费| 亚洲国产日朝欧美综合久久| 成人精品播放视频在线观看| 亚洲av毛片一区二区| 国产精品国产三级国产av丨| 青青草原在线视频伊人| 亚洲国产黄片在线播放| 精品久久av一区二区三区| 粉嫩护士国产在线观看| 欧美亚洲国产日韩熟女| 久久久久久狠狠亚洲综合|