调用超类的awakeFromNib

时间:2016-06-14 06:36:26

标签: ios objective-c iphone xcode

我安装了Xcode 8.0 beta(8S128d)。现在我收到一些警告:

Method possibly missing a [super awakeFromNib] call
所有awakeFromNib方法中的

。 在这种情况下,我需要调用这个超类的方法吗?

2 个答案:

答案 0 :(得分:35)

根据Apple

  

您必须调用awakeFromNib的超级实现来提供父级   对他们进行任何额外初始化的机会进行分类   要求。虽然这个方法的默认实现确实如此   没有,许多UIKit类提供非空实现。你可以   在你自己的任何时候调用超级实现   awakeFromNib方法。

在Xcode 8之前,没有严格的编译器要求,无论Apple如何用Xcode8改变它,如果缺少对[super awakeFromNib](或swift中的super.awakeFromNib())的调用,编译器会将其视为错误在awakeFromNib中。

所以Swift版本看起来像这样:

func awakeFromNib() {
   super.awakeFromNib()

   ... your magical code ...
}

答案 1 :(得分:17)

您在代码中有效地覆盖了'awakeFromNib'方法。 NSView或者你的superview也实现了awakeFromNib - 在执行任何代码之前,你应该在实现开始时调用super,以确保NSView可以事先正确设置自己。

- (void)awakeFromNib
{
   [super awakeFromNib];

   ... your code ...
}