看板 MacDev 關於我們 聯絡資訊
小弟是 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
iwayne:個人覺得,要看你各個ViewController的狀態是否要儲存而定 11/24 21:52
iwayne:因為按下button後再alloc出來,是否回到Root時就會release? 11/24 21:53
iwayne:因為,你再按同樣的button又會再alloc新的ViewController. 11/24 21:53
iwayne:如果你各ViewController的狀態有需要存的話,那就在root 11/24 21:55
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)
popcorny:我習慣是按到才alloc.. 並且不會放到property.. 11/24 22:51
ethan4ptt:以Apple一開始的建議,是使用延遲載入。因為Mobile的 11/25 21:13
ethan4ptt:RAM大部分都不多,一開始全alloc。載入時間較久 11/25 21:14
ethan4ptt:不過現在新機器效能都不錯了,是否還需要嚴格遵守,就看 11/25 21:15
ethan4ptt:就看你App的特性了。 11/25 21:16
Blueshiva:或者另一個考量方式是,預期使用者會長按到的就先alloc 11/26 11:57
Blueshiva:下來,提升反應,少用到的就按到在alloc,反正不常用 11/26 11:58
了解,非常感謝大家的回應! ※ 編輯: bmzz 來自: 114.24.75.187 (11/26 20:24)
aecho:我是喜歡lazy load,有用到再alloc。放property的話 11/26 21:12
aecho:改一下getter的行為就可以實現lazy load了 11/26 21:12