2009-08-16 43 views

回答

3

我只能說這在viewDidLoad作爲視圖可裝載超過一次(也被卸載,因此你可能還需要重新加載您的陣列)。

此外,它在iPhone上懶洋洋地加載數據的大部分時間是個好主意。在viewDidLoad中加載數據比使用init要緩慢得多,如果您初始化,最終可能會對您的性能更好,但不會立即使用您的視圖控制器。在初始化這樣

+0

好吧,這是有道理的,但你可以告訴我什麼時候調用viewDidUnload?我知道,當視圖已經卸載,但是什麼時候會自動發生?我怎樣才能手動卸載它? – mk12 2009-08-17 01:36:31

+1

當UIViewController收到內存警告時,該視圖將被UIViewController卸載,此時它將調用viewDidUnload。如果你確實在viewDidLoad中創建了你的數組,你必須確保在viewDidUnload中銷燬它。如果視圖不可見,則必須確保它永遠不會被訪問(如果可見,視圖永遠不會被卸載)。如果您確實需要訪問它(例如,更新它),即使您的視圖不可見,我也建議在init中創建它。 Apple建議僅​​將viewDidLoad用於可輕鬆重新創建的對象。 – 2009-08-17 12:22:17

+0

在init中創建它的替代方法是將數組定義爲屬性,並在第一次訪問時懶洋洋地創建該數組。最終結果與init方法相同,但是如果您從不訪問數組,它將不會使用內存。 – 2009-08-17 12:24:39

2

這取決於正是你想要的陣列來存儲,以及你打算如何初始化。 viewDidLoad可以被多次調用(特別是在向程序發送低內存警告之後 - 不活動的視圖控制器將卸載它們的視圖,然後在它們變爲活動或再次可見時重新加載它們),而init通常只會在一生中被調用一次的對象。

1

一種情況,就是viewDidLoad中可以viewWillAppear中後調用。如果你依賴當時存在的數組,則可能需要將init初始化。

一般來說,viewDidLoad中是一個相當不錯的地方,只要你記住它可以被調用一次以上。