awakeFromNib的好处?

我一直在学习coredata,通过使用“use coredata”选中基于xcode导航控制器模板的很多简单的testing应用程序。

应用程序委托中的awakeFromNib方法一直是我的问题的一个来源,因为我将其他视图添加到控制器并更改加载顺序,以便RootViewController可能是第二个或第三个select。

我已经知道了awakeFromNib在做什么,我已经删除了它,所以应用程序委托不再绑定到任何特定的视图。 (所以,当我想要加载RootViewController,我将加载它作为一个常规的看法,并使用自己的viewDidLoad初始化视图的managedObjectContext)。

我的问题:在AppDelegate中使用awakeFromNIb会有性能提升或其他好处吗? 还是只是另一种方式做同样的事情,我从viewDidLoad方法做?

所有的方法在不同的时间和不同的情况下都会发生

当从磁盘加载与类关联的nib文件时,将调用awakeFromNib 。 任何可以拥有笔尖的class级都可以使用它。 viewDidLoad仅被视图控制器使用。 通常在从笔尖加载时调用它,但也可以通过在内存中创build的视图来调用(非常罕见的情况)。

在任何一种情况下,只能将function置于只在实例第一次加载时才运行一次。 例如,一个常见的nubie错误是将代码放在viewDidLoad ,每次出现视图时都需要运行该代码。 与主视图一样,打开详细视图,然后在细节视图closures时再次出现。 如果主视图的代码在viewDidLoad ,它将只会在第一次加载主视图时运行,而不会在主视图消失并重新出现的任何后续时间运行。

您通常不会初始化任何其他视图,或者在应用程序委托从nib唤醒时执行任何操作。 这通常在applicationDidFinishLaunching执行。