iPhone dev - 在init或viewDidLoad中创建数组

时间:2009-08-16 22:37:13

标签: iphone objective-c nsarray where initialization

在我的UIViewController子类中,我应该在init或viewDidLoad中为UIPickerView初始化NSArray数据,为什么?感谢。

3 个答案:

答案 0 :(得分:3)

我会在viewDidLoad中调用它,因为视图可以多次加载(也可以卸载,因此您可能还需要重新加载数组)。

此外,大多数时候在iPhone上懒洋洋地加载数据是个好主意。在viewDidLoad中加载数据比init更加懒惰,如果您初始化,最终可能会更好地为您执行,但不要立即使用您的视图控制器。

答案 1 :(得分:2)

这取决于您打算存储数组的确切内容,以及您打算如何初始化它。可以多次调用viewDidLoad(特别是在向程序发送低内存警告之后 - 非活动视图控制器将卸载其视图,然后在变为活动状态或再次显示时重新加载它们),而init将通常只在对象的生命周期内被调用一次。

答案 2 :(得分:1)

在init中执行此操作的一种情况是viewDidLoad可以在viewWillAppear之后调用。如果您依赖于当时存在的数组,则可能需要将初始化放在init。

一般来说,viewDidLoad是一个非常好的地方,只要你记住它可以不止一次被调用。