[問題] ViewController 的建立時機

看板MacDev作者 (bmzz)時間13年前 (2011/11/24 20:55), 編輯推噓2(2012)
留言14則, 5人參與, 最新討論串1/1
小弟是 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

11/24 21:52, , 1F
個人覺得,要看你各個ViewController的狀態是否要儲存而定
11/24 21:52, 1F

11/24 21:53, , 2F
因為按下button後再alloc出來,是否回到Root時就會release?
11/24 21:53, 2F

11/24 21:53, , 3F
因為,你再按同樣的button又會再alloc新的ViewController.
11/24 21:53, 3F

11/24 21:55, , 4F
如果你各ViewController的狀態有需要存的話,那就在root
11/24 21:55, 4F

11/24 21:56, , 5F
alloc物件吧。也就是說當root被release時,那些View再回收.
11/24 21:56, 5F
謝謝回應!再請問,如果我都是等 root 被 release 才 release 這些 controller, 那在 iphone 3GS 上面是否很容易 crash ?(因為一直佔著記憶體) ※ 編輯: bmzz 來自: 210.242.250.115 (11/24 21:58)

11/24 22:51, , 6F
我習慣是按到才alloc.. 並且不會放到property..
11/24 22:51, 6F

11/25 21:13, , 7F
以Apple一開始的建議,是使用延遲載入。因為Mobile的
11/25 21:13, 7F

11/25 21:14, , 8F
RAM大部分都不多,一開始全alloc。載入時間較久
11/25 21:14, 8F

11/25 21:15, , 9F
不過現在新機器效能都不錯了,是否還需要嚴格遵守,就看
11/25 21:15, 9F

11/25 21:16, , 10F
就看你App的特性了。
11/25 21:16, 10F

11/26 11:57, , 11F
或者另一個考量方式是,預期使用者會長按到的就先alloc
11/26 11:57, 11F

11/26 11:58, , 12F
下來,提升反應,少用到的就按到在alloc,反正不常用
11/26 11:58, 12F
了解,非常感謝大家的回應! ※ 編輯: bmzz 來自: 114.24.75.187 (11/26 20:24)

11/26 21:12, , 13F
我是喜歡lazy load,有用到再alloc。放property的話
11/26 21:12, 13F

11/26 21:12, , 14F
改一下getter的行為就可以實現lazy load了
11/26 21:12, 14F
文章代碼(AID): #1EpZxJHr (MacDev)
文章代碼(AID): #1EpZxJHr (MacDev)