自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS開(kāi)發(fā) UIViewController內(nèi)存管理

移動(dòng)開(kāi)發(fā) iOS
本文介紹的是iOS開(kāi)發(fā) UIViewController內(nèi)存管理,在 iOS 3.0 后,UIViewController 多了一個(gè)叫做 viewDidUnLoad 的方法,我們先來(lái)看內(nèi)容。

iOS開(kāi)發(fā) UIViewController內(nèi)存管理是本文要介紹的內(nèi)容,在 iOS 3.0 后,UIViewController 多了一個(gè)叫做 viewDidUnLoad 的方法。不少人都不清楚這個(gè)方法的具體意義,蘋(píng)果的文檔也就一句 ”Called when the controller’s view is released from memory” 簡(jiǎn)單的解釋了下,并要求你把 IBOutlet 綁定的視圖給清空,為什么呢?

先看下 UIViewController 從創(chuàng)建 view 到展示的流程的幾個(gè)函數(shù)

  1. -init  
  2. -initWithNibName:bundle: 

這兩個(gè)方法都是初始化一個(gè) vc,但請(qǐng)注意 view 不是這時(shí)候載入的

  1. -loadView  
  2. -viewDidLoad 

當(dāng)一個(gè)視圖準(zhǔn)備展現(xiàn)時(shí),vc 首先會(huì)判斷 view 是否已經(jīng)創(chuàng)建否則便通過(guò)之前指定的 xib 文件來(lái)初始化 view,以及綁定其他關(guān)系(若沒(méi)有指定 xib 文件,則默認(rèn)會(huì)搜索和 vc 同名的 xib,比如 myNameViewController 就會(huì)搜索 myNameViewController.xib 文件)

若是沒(méi)有 xib 文件,你就可以在 loadview 中自己手動(dòng)創(chuàng)建這個(gè) viewControoler 需要的視圖。接下來(lái)就是調(diào)用到 -viewDidLoad,許多人喜歡在這里做些其他事情,比如做個(gè) http 請(qǐng)求、建立個(gè)數(shù)組啥的。這里若不處理正確,-viewDidUnload 激活時(shí)內(nèi)存就容易泄露了,稍后提到。

  1. -view()appear  
  2.  -view()disappear 

這幾個(gè)方法就不解釋了

  1. -viewDidUnload 

該方法在收到內(nèi)存警告,同時(shí)該視圖并不在當(dāng)前界面顯示時(shí)候會(huì)被調(diào)用,此時(shí)該 controller 的 view 已經(jīng)被釋放并賦值為 nil。

接下來(lái)你要做的是把實(shí)例變量的子視圖釋放(IBOulet 的,以及自己添加的) 其他實(shí)例變量,比如之前在 -viewDidLoaded 中實(shí)例的數(shù)據(jù)數(shù)組、http 請(qǐng)求釋放掉

因?yàn)楫?dāng)該 viewController 再次被激活準(zhǔn)備顯示時(shí)(比如 navigationControler 返回到上一級(jí)),vc 發(fā)現(xiàn)自己的 view 為空后會(huì)重復(fù)之前的流程直到把 view 給創(chuàng)建起來(lái)。若沒(méi)將自己額外添加的子視圖,各種類(lèi)實(shí)例變量釋放,這里便會(huì)重新再次創(chuàng)建。

于是,內(nèi)存泄露了。

小結(jié):詳解UIViewController 內(nèi)存管理的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。

轉(zhuǎn)自 http://ixhan.com/2011/02/uiviewcontroller-memory-manage/

責(zé)任編輯:zhaolei 來(lái)源: Cocoa China
相關(guān)推薦

2018-07-23 09:26:08

iOS內(nèi)存優(yōu)化

2017-03-07 10:15:35

iOS內(nèi)存管理開(kāi)發(fā)

2011-08-22 11:07:16

IOS 開(kāi)發(fā)多核內(nèi)存

2011-09-01 10:42:14

Objective-CCocoa內(nèi)存管理

2015-03-13 09:30:23

iOS內(nèi)存管理

2016-04-11 09:30:49

內(nèi)存管理ios開(kāi)發(fā)

2017-02-09 21:24:22

iOS內(nèi)存管理

2012-01-18 14:14:29

iOS教程iOS5

2014-07-31 10:48:09

Android內(nèi)存管理OOM

2015-06-25 09:47:20

iOS內(nèi)存管理

2012-02-01 13:57:40

內(nèi)存緩存機(jī)制

2013-12-17 15:46:04

iOS開(kāi)發(fā)iOS 內(nèi)存泄漏

2011-08-02 10:50:56

iOS開(kāi)發(fā) 內(nèi)存緩存

2011-08-17 16:23:31

iPhone開(kāi)發(fā)UIViewContr

2014-03-12 09:37:22

內(nèi)存管理autoreleaseautorelease

2011-08-05 16:41:48

iOS 隊(duì)列 內(nèi)存

2016-03-03 10:07:39

ios內(nèi)存管理面試總結(jié)

2011-07-21 17:40:43

iOS 多核 內(nèi)存

2011-07-26 15:14:24

蘋(píng)果 Cocoa 內(nèi)存

2017-06-30 15:58:07

Android開(kāi)發(fā)內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)