init方法与viewDidLoad类型方法

时间:2013-02-06 05:35:43

标签: ios uiviewcontroller initialization viewdidload

应该在init方法中使用的代码类型(对象分配,设置ui元素,网络调用等)与视图控制器的viewDidLoad类型方法之间的区别的一般原则是什么?< / p>

1 个答案:

答案 0 :(得分:9)

初始化=&gt; 调用/ use初始化您的ViewController并仅为UIViewController初始化而不是它的视图

ViewDidLoad =&gt; 调用/ use for load view,此方法在加载nib后调用

  

系统可以卸载视图来节省内存,它会单独留下UIViewController。由于UIViewController已经初始化

,因此初始化方法中设置的任何属性都不会再次应用

在iOS应用程序中初始化变量是每个项目都会遇到的问题。 选择正确的位置来初始化变量有时候会很棘手。我最近遇到了一个难以复制的问题,并且更改了一些在我的viewDidLoad方法中初始化的变量以及我无法理解他们正在改变的人。

在viewcontroller中初始化变量的可能方法是: - 在里面 - viewDidLoad - viewWillAppear - viewDidAppear

为了解释我的观点,我使用模板Tab Bar Application开始了一个新项目。我将日志语句添加到两个视图控制器中的viewDidLoad方法。 A还为第二个视图控制器添加了一个按钮,用于初始化一些可以给我内存警告的图像。

记录一些陈述后得出以下结论:

15:11:40.077 testblog2[4865:707] FirstViewController viewdidload
15:11:56.720 testblog2[4865:707] SecondViewController viewDidLoad
15:12:05.710 testblog2[4865:707] Pressed loading images button
15:12:19.025 testblog2[4865:707] Received memory warning. Level=1
15:12:21.272 testblog2[4865:707] SecondViewController didReceiveMemoryWarning

<强> =&GT;现在更改为第一个标签

15:12:30.822 testblog2[4865:707] FirstViewController viewdidload

如果在viewDidLoad方法中初始化变量,请记住在收到内存警告后可以重新初始化这些变量。 Cocoa将删除视图,一旦您转到该特定视图控制器,您的viewDidLoad方法将再次被触发。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926