在我UIViewController子類創建陣列我應該初始化爲UIPickerView數據的NSArray在init或在viewDidLoad中,爲什麼?謝謝。iPhone開發 - 在init或viewDidLoad中
4
A
回答
3
我只能說這在viewDidLoad
作爲視圖可裝載超過一次(也被卸載,因此你可能還需要重新加載您的陣列)。
此外,它在iPhone上懶洋洋地加載數據的大部分時間是個好主意。在viewDidLoad
中加載數據比使用init
要緩慢得多,如果您初始化,最終可能會對您的性能更好,但不會立即使用您的視圖控制器。在初始化這樣
2
這取決於正是你想要的陣列來存儲,以及你打算如何初始化。 viewDidLoad
可以被多次調用(特別是在向程序發送低內存警告之後 - 不活動的視圖控制器將卸載它們的視圖,然後在它們變爲活動或再次可見時重新加載它們),而init
通常只會在一生中被調用一次的對象。
1
一種情況,就是viewDidLoad中可以viewWillAppear中後調用。如果你依賴當時存在的數組,則可能需要將init初始化。
一般來說,viewDidLoad中是一個相當不錯的地方,只要你記住它可以被調用一次以上。
相關問題
- 1. iphone開發控制null後ViewDidLoad
- 2. viewDidLoad在init之前調用?
- 3. 寫init方法傳遞模型viewDidLoad中
- 4. 初始化數據結構的位置:init或viewDidLoad?
- 5. 在「init」中初始化的對象無法在「viewDidLoad」中訪問
- 6. viewDidLoad in iPhone
- 7. iPhone開發從的MPMoviePlayerController
- 8. UITabController iPhone開發
- 9. ViewDidLoad方法不會在iPhone中調用?
- 10. iPhone開發 - NSInternalInconsistencyException幫助?
- 11. iPhone開發 - CLLocationManager與MapKit
- 12. c#iPhone開發vs Objective C iPhone開發
- 13. iPhone開發
- 14. iPhone開發 - ViewDidUnload
- 15. iPhone開發 - viewDidUnload子視圖
- 16. 開始iPhone開發
- 17. 開始iPhone開發
- 18. 在viewDidLoad中
- 19. iPhone開發
- 20. iPhone開發-CGPoint&NSTimer幫助
- 21. iPhone開發 - 從NSString UIDatePicker日期
- 22. iPhone開發實施:SQLite或Web服務
- 23. 用於iPhone/iPad開發的iAd或AdMob?
- 24. iphone遊戲開發,Cocos2d或OpenGL
- 25. IB對象vs手動分配的對象在init/viewDidLoad
- 26. 在Linux或窗口中的Web開發Iphone模擬器
- 27. iPhone開發
- 28. viewDidLoad可以在viewController的'init'完全執行之前調用嗎?
- 29. viewDidLoad中的alloc/init會導致IB忽略出口
- 30. Iphone開發者
好吧,這是有道理的,但你可以告訴我什麼時候調用viewDidUnload?我知道,當視圖已經卸載,但是什麼時候會自動發生?我怎樣才能手動卸載它? – mk12 2009-08-17 01:36:31
當UIViewController收到內存警告時,該視圖將被UIViewController卸載,此時它將調用viewDidUnload。如果你確實在viewDidLoad中創建了你的數組,你必須確保在viewDidUnload中銷燬它。如果視圖不可見,則必須確保它永遠不會被訪問(如果可見,視圖永遠不會被卸載)。如果您確實需要訪問它(例如,更新它),即使您的視圖不可見,我也建議在init中創建它。 Apple建議僅將viewDidLoad用於可輕鬆重新創建的對象。 – 2009-08-17 12:22:17
在init中創建它的替代方法是將數組定義爲屬性,並在第一次訪問時懶洋洋地創建該數組。最終結果與init方法相同,但是如果您從不訪問數組,它將不會使用內存。 – 2009-08-17 12:24:39