awakeFromNib 的好处?
Posted
技术标签:
【中文标题】awakeFromNib 的好处?【英文标题】:the Benifits of awakeFromNib? 【发布时间】:2011-06-23 07:45:04 【问题描述】:我通过基于 xcode 导航控制器模板并勾选“使用 coredata”制作了许多简单的测试应用程序来学习 coredata。
App 委托中的 awakeFromNib 方法一直是我的问题来源,因为我正在向控制器添加其他视图并更改加载顺序,因此 RootViewController 可能是第二或第三选择。
我已经弄清楚 awakeFromNib 在做什么,并且我已经将其删除,因此应用程序委托不再与任何特定视图相关联。 (所以当我确实想加载 RootViewController 时,我会将它作为常规视图加载,并使用它自己的 viewDidLoad 来为视图初始化 managedObjectContext)。
我的问题:在 AppDelegate 中使用 awakeFromNIb 是否有性能提升或其他好处?或者它只是另一种做同样事情的方式,就像我从 viewDidLoad 方法做的一样?
【问题讨论】:
【参考方案1】:所有方法在不同的时间和不同的情况下触发。
awakeFromNib
在从磁盘加载与类关联的 nib 文件时调用。任何可以拥有 nib 的班级都可以使用它。 viewDidLoad
仅由视图控制器使用。它通常在从 nib 加载时调用,但也可以由在内存中创建的视图调用(非常罕见的情况。)
在任何一种情况下,您只需要在第一次加载实例时只希望运行一次的功能。例如。 nubie 的一个常见错误是将代码放在每次视图出现时都需要运行的viewDidLoad
中。就像主视图打开详细视图,然后在详细视图被关闭时重新出现一样。如果主视图的代码在viewDidLoad
中,它只会在第一次加载主视图时运行,但不会在随后的任何时候主视图消失并重新出现。
在应用程序委托从 nib 唤醒时,您通常不会初始化任何其他视图或做任何事情。这通常在applicationDidFinishLaunching
中执行。
【讨论】:
好的,谢谢。我只是担心在应用程序委托中删除 awakeFromNib 并将初始化代码移动到 viewDidLoad 可能会降低性能。以上是关于awakeFromNib 的好处?的主要内容,如果未能解决你的问题,请参考以下文章