【问题标题】:the Benifits of awakeFromNib?awakeFromNib 的好处?
【发布时间】:2011-06-23 07:45:04
【问题描述】:

我通过基于 xcode 导航控制器模板并勾选“使用 coredata”制作了许多简单的测试应用程序来学习 coredata。

App 委托中的 awakeFromNib 方法一直是我的问题来源,因为我正在向控制器添加其他视图并更改加载顺序,因此 RootViewController 可能是第二或第三选择。

我已经弄清楚 awakeFromNib 在做什么,并且我已经将其删除,因此应用程序委托不再与任何特定视图相关联。 (所以当我确实想加载 RootViewController 时,我会将它作为常规视图加载,并使用它自己的 viewDidLoad 来为视图初始化 managedObjectContext)。

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

【问题讨论】:

    标签: ios delegates views awakefromnib


    【解决方案1】:

    所有方法在不同的时间和不同的情况下触发。

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

    在任何一种情况下,您只需要在第一次加载实例时只希望运行一次的功能。例如。 nubie 的一个常见错误是将代码放在每次视图出现时都需要运行的viewDidLoad 中。就像主视图打开详细视图,然后在详细视图被关闭时重新出现一样。如果主视图的代码在viewDidLoad 中,它只会在第一次加载主视图时运行,但不会在随后的任何时候主视图消失并重新出现。

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

    【讨论】:

    • 好的,谢谢。我只是担心在应用程序委托中删除 awakeFromNib 并将初始化代码移动到 viewDidLoad 可能会降低性能。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多