作者bmzz (bmzz)
看板MacDev
標題[問題] ViewController 的建立時機
時間Thu Nov 24 20:55:44 2011
小弟是 Objective-C 的新手,有個問題想請教一下大家。
假設 RootViewController 有十個按鈕,每一個按鈕都會跳到相對應的
ViewController 中。
那麼我應該是在 RootViewController 的 ViewDidLoad(or init) 時,分
別將這些 ViewController 物件 alloc 出來,然後存放在相對應的
RootViewController 的 property(or private variable)中,還是應該
在觸發 Button Event 時,再 alloc 出來,然後存放在
RootViewController 的 property(or private variable)中?
這兩種做法是否沒有定論?視情況而定?
那分別又有什麼優缺呢?
希望有大大可以幫忙解惑!謝謝!問題很新,實在抱歉!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.250.115
1F:→ iwayne:個人覺得,要看你各個ViewController的狀態是否要儲存而定 11/24 21:52
2F:→ iwayne:因為按下button後再alloc出來,是否回到Root時就會release? 11/24 21:53
3F:→ iwayne:因為,你再按同樣的button又會再alloc新的ViewController. 11/24 21:53
4F:→ iwayne:如果你各ViewController的狀態有需要存的話,那就在root 11/24 21:55
5F:→ iwayne:alloc物件吧。也就是說當root被release時,那些View再回收. 11/24 21:56
謝謝回應!再請問,如果我都是等 root 被 release 才 release 這些 controller,
那在 iphone 3GS 上面是否很容易 crash ?(因為一直佔著記憶體)
※ 編輯: bmzz 來自: 210.242.250.115 (11/24 21:58)
6F:→ popcorny:我習慣是按到才alloc.. 並且不會放到property.. 11/24 22:51
7F:推 ethan4ptt:以Apple一開始的建議,是使用延遲載入。因為Mobile的 11/25 21:13
8F:→ ethan4ptt:RAM大部分都不多,一開始全alloc。載入時間較久 11/25 21:14
9F:→ ethan4ptt:不過現在新機器效能都不錯了,是否還需要嚴格遵守,就看 11/25 21:15
10F:→ ethan4ptt:就看你App的特性了。 11/25 21:16
11F:推 Blueshiva:或者另一個考量方式是,預期使用者會長按到的就先alloc 11/26 11:57
12F:→ Blueshiva:下來,提升反應,少用到的就按到在alloc,反正不常用 11/26 11:58
了解,非常感謝大家的回應!
※ 編輯: bmzz 來自: 114.24.75.187 (11/26 20:24)
13F:→ aecho:我是喜歡lazy load,有用到再alloc。放property的話 11/26 21:12
14F:→ aecho:改一下getter的行為就可以實現lazy load了 11/26 21:12