init方法与viewDidLoadtypes方法

init方法中的代码types(对象分配,设置ui元素,networking调用等)与视图控制器的viewDidLoadtypes方法之间的区别的一般指导原则是什么?

初始化=>调用/用于初始化您的ViewController和初始化只为UIViewController而不是它的意见

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

系统可以卸载视图来节省内存,它将单独离开UIViewController。 在init方法中设置的任何属性都不会再被应用,因为UIViewController已经被初始化了

在iOS应用程序中初始化variables是每个项目都要面对的问题。 select正确的地方来初始化variables有时可能会非常棘手。 我最近面临一个难以复制的问题,并改变了一些在我的viewDidLoad方法中初始化的variables,以及我不明白他们正在改变的variables。

在您的viewcontroller中初始化variables的可能方法是: – init – viewDidLoad – viewWillAppear – viewDidAppear

为了解释我的观点,我使用模板选项卡栏应用程序开始了一个新项目。 我在这两个视图控制器中添加了日志语句到viewDidLoad方法。 A还向第二个视图控制器添加了一个button,它将初始化一些图像,这会给我一个内存警告。

logging一些语句后,得出以下结论:

 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 

=>现在切换到第一个选项卡

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

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

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