应该在init方法中使用的代码类型(对象分配,设置ui元素,网络调用等)与视图控制器的viewDidLoad类型方法之间的区别的一般原则是什么?< / p>
答案 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方法将再次被触发。