iPhone开发人员-在init或viewDidLoad中创建数组
在UIViewController子类中,我应该在init或viewDidLoad中初始化UIPickerView的NSArray数据,为什么?谢谢。这完全取决于您希望阵列存储什么以及如何初始化它iPhone开发人员-在init或viewDidLoad中创建数组,iphone,objective-c,nsarray,where,initialization,Iphone,Objective C,Nsarray,Where,Initialization,在UIViewController子类中,我应该在init或viewDidLoad中初始化UIPickerView的NSArray数据,为什么?谢谢。这完全取决于您希望阵列存储什么以及如何初始化它viewDidLoad可以多次调用(特别是在向程序发送内存不足警告后-非活动视图控制器将卸载其视图,然后在视图再次变为活动或可见时重新加载),而init通常在对象的生命周期内只调用一次。我会在viewDidLoad中调用它,因为视图可以多次加载(也可以卸载,因此您可能还需要重新加载数组) 另外,大部分时
viewDidLoad
可以多次调用(特别是在向程序发送内存不足警告后-非活动视图控制器将卸载其视图,然后在视图再次变为活动或可见时重新加载),而init
通常在对象的生命周期内只调用一次。我会在viewDidLoad
中调用它,因为视图可以多次加载(也可以卸载,因此您可能还需要重新加载数组)
另外,大部分时间在iPhone上懒洋洋地加载数据也是个好主意。在
viewdiload
中加载数据比在init
中加载数据要慢得多,如果您使用init,结果可能会更好,但不要立即使用视图控制器。在init中这样做的一种情况是,可以在viewdiload出现后调用viewdiload。如果您依赖于当时存在的数组,则可能需要将初始化放在init中
一般来说,只要记住可以多次调用viewDidLoad,viewDidLoad是一个非常好的地方。好的,这是有道理的,但是您能告诉我什么时候调用viewDidLoad吗?我知道,当视图已卸载时,但何时会自动发生?如何手动卸载?当收到内存警告时,UIViewController将卸载视图,此时将调用viewDidUnload。如果确实在viewDidLoad中创建了数组,则必须确保在viewDidUnload中销毁它。您还必须确保,如果视图不可见,则永远不会访问它(如果视图可见,则永远不会卸载视图)。如果您确实需要访问它(例如,更新它),即使您的视图不可见,我建议您在init中创建它。Apple建议仅对可以轻松重新创建的对象使用viewDidLoad。在init中创建viewDidLoad的另一种方法是将数组定义为属性,并在首次访问数组时延迟创建数组。最终结果与init方法相同,但如果您从未访问该数组,它将不会使用内存。