调用superclass的awakeFromNib

我安装了Xcode 8.0 beta(8S128d)。 现在我有一些警告消息:

Method possibly missing a [super awakeFromNib] call 

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

根据苹果 :

您必须调用awakeFromNib的超级实现,为父类提供执行所需的任何额外初始化的机会。 虽然这个方法的默认实现什么都不做,许多UIKit类提供了非空的实现。 你可以在自己awakeFromNib方法的任何时候调用超级实现。

在Xcode 8之前,对此没有严格的编译器要求,不过Apple已经用Xcode8改变了这一点,而且如果在awakeFromNib中缺less对[super awakeFromNib] (或者super.awakeFromNib()调用,编译器会将其视为错误。

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

 func awakeFromNib() { super.awakeFromNib() ... your magical code ... } 

你有效地重写代码中的“awakeFromNib”方法。 NSView或任何你的superview也实现awakeFromNib – 你应该在你的执行开始时调用超级,然后再做任何代码,以确保NSView可以事先设置正确。

 - (void)awakeFromNib { [super awakeFromNib]; ... your code ... }