init方法与viewDidLoad类型方法

NSN*_*lan 3 initialization uiviewcontroller viewdidload ios

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

iPa*_*tel 10

Init =>调用at/use来初始化你的ViewController和Initialize只是为了 UIViewController而不是它的视图

ViewDidLoad =>在/用于加载视图,在加载nib后调用此方法

系统可以卸载视图来节省内存,它会单独留下UIViewController.由于UIViewController已经初始化,因此初始化方法中设置的任何属性都不会再次应用

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

在viewcontroller中初始化变量的可能方法有: - init - 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
Run Code Online (Sandbox Code Playgroud)

=>现在改为第一个标签

15:12:30.822 testblog2[4865:707] FirstViewController viewdidload
Run Code Online (Sandbox Code Playgroud)

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

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