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

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è)
不卡视频一区中文字幕| 亚洲精品中文字幕码专区| 在线观看91精品国产秒播| 精品亚洲美无人区乱码| 88国产精品久久久久久| 免费在线观看av日韩| 国产视频一区2区三区| 欧美香蕉视频播放二区| 中文字幕日韩在线欧美一区| 精品国产自在久久成人| 国内精品久久久国产盗摄| av熟女一区二区三区| 亚洲永久免费在线观看| 日本在线最新视频一区二区三区| 精品视频中文字幕天码| 欧美亚洲另类国产精品| 久久青草视频在线观看| 国产一级黄色片免费看| 精精国产xxxx视频在线不卡| 高质量的性生活在线观看| 久草视频免费福利资源站| av一区二区日韩精品久| 在线午夜免费视频观看| 黄色资源网日韩三级一区二区| 黄色大片黄色大片黄色大片| 精品成人乱色一区二区| 曰韩精品一区二区三区乱码| 国产三级黄色大片在线免费看 | 欧美三级视频一区二区三区| 日本午夜激情一区二区| 高清不卡日本一区二区三区久久| 亚洲av第一区国产精品| 亚洲免费视频区一区二| 亚洲国产日韩欧美在线| 一区二区三区国产欧美日本| 日日添夜夜添天天操| 欧美高清视频免费播放| 涩五月婷婷开心中文字幕| 男人的天堂在线观看黄片| 精品久久av一区二区三区| 日本欧美一区二区二区视频免费|