objective-c - Objective-C : init and awakeFromNib

标签 objective-c cocoa initializer

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

  • 在覆盖的指定初始化器中:做所有非 Nib 的事情
  • 在 awakeFromNib 中:做所有与 Nib 相关的事情

这种做法错了吗?

最佳答案

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

关于初始化器,请检查这个问题:iOS: UIView subclass init or initWithFrame:?

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

关于objective-c - Objective-C : init and awakeFromNib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074601/

相关文章:

objective-c - 延迟通话,有可能取消吗?

ios - objective-c - block 保留周期

iphone - objective-c 中局部常量的最佳实践

c - 如何在 C 中将数组大小放入数组初始值设定项本身?

objective-c - 从另一个类添加和控制 UIImageView subview

objective-c - iOS内存泄漏与字典

objective-c - Cocoa GUI 类如何在不调用 NSApplication 或 NSRunLoop 的情况下运行

objective-c - NSMutableDictionary 对每个值应用公式的最有效方法

ios - 在 ViewController 上获取初始化程序错误

ruby-on-rails - Rails - 如何在初始化程序中设置全局实例变量?