MacDev 板


LINE

: 推 dm4:請問一下 zonble 大,文中的這個 scrollView 如果放在 12/26 15:32 : → dm4:viewDidLoad 的時候再 add 會有什麼差別嗎? 12/26 15:32 整個解釋一遍好了。UIViewController 與其所屬的 view 之間 的關係,是所謂的 Lazy Loading-在 UIViewController 經過 alloc、init 之後,並不會馬上產生 view 這個物件,而是第一 次呼叫到 view,才去產生 view。根據 UIViewController 所表 現的行為,我們可以知道,蘋果的實作大概是這樣: @implementation UIViewController .... - (UIView *)view { if (!_view) { [self loadView]; if (_view) { [self viewDidLoad]; } } return _view; } - (void)setView:(UIView *)inView { [_view release]; _view = [inView retain]; if (!_view) { [self viewDidUnload]; } } 我們有兩種不同的方式載入 view,一種是透過 nib 載入,另外 一種則是用程式產生。官方文件的規範是,如果你要載入 nib, 就不要改寫 loadView,讓 UIViewController 原本實作的 loadView 載入 nib,而你對 nib 載入的 view 還想做什麼事情,就寫在 viewDidLoad 裡頭。 而如果要自己用程式產生 self.view,那麼,官方就要求你改寫 loadView,而且不要呼叫 [super loadView]。實際上,如果沒有 nib, 卻呼叫了 [super loadView],還是會給你一個空白的 view;會動, 但是不好-因為根本就不需要載入 nib,呼叫 super,卻會讓程式 走到看看有沒有 nib 要載入那段,其實是多此一舉。這時候寫在 loadView 與 viewDidLoad 的差別不大。 有件事情很重要:什麼時候要去 release scrollView。由於 UIViewController 不只是在 dealloc 的時候會去 release view, 而是在收到記憶體不足警告的時候,不在前景的 view controller, 都會把 view 放掉,而當這個 view controller 回到前景時,再 透過 Lazy Loading,重新產生 view 物件。所以,像 scrollView 這種會在 loadView 產生的物件,不但要在 view controller dealloc 的時候 release,在 viewDidUnload 的時候也要 release,以避免 因為記憶體警告發生時,重複在 loadView 中產生新的 scrollView, 而造成 memory leak。 -- zonble.net cocoa.zonble.net --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.182.144
1F:推 dm4:感謝 zonble 大! 12/28 12:16
2F:推 popcorny:好文章..推!! 12/28 14:26
3F:→ seedman:原來如此! 12/29 18:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP