目标C:init和awakeFromNib

时间:2013-08-06 07:56:02

标签: objective-c cocoa initializer

我最近研究了一些基于Cocoa的开源项目。我看到很多程序在awakeFromNib中都有初始化代码,很少使用指定的初始化程序。我习惯这样做:

  • 在重写的指定初始化程序中:执行所有非Nib内容
  • 在awakeFromNib中:做所有与Nib相关的东西

这种方法有误吗?

1 个答案:

答案 0 :(得分:2)

是的,这是正确的,所有与nib相关的东西都应该在awakeFromNib方法中完成。在它被调用的那一刻你已经从nib初始化并加载了视图,所以你已经可以配置和使用它了。

关于初始值设定项,请查看此问题:iOS: UIView subclass init or initWithFrame:?

指定的初始值设定项是所有其他初始化程序必须调用的初始值设定项。 UIView和子类有点不寻常,因为它们实际上有两个这样的初始化器:-initWithFrame:和-initWithCoder :,取决于视图的创建方式。您应该覆盖-initWithFrame:如果您在代码中实例化视图,并且-initWithCoder:如果您从nib加载它。或者,您可以将代码放在第三种方法中,并覆盖这些初始化程序,以便它们调用第三种方法。事实上,这通常是推荐的策略。

相关问题