调用超类的awakeFromNib

Art*_*kov 25 iphone xcode objective-c ios

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

Method possibly missing a [super awakeFromNib] call
Run Code Online (Sandbox Code Playgroud)

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

iHS*_*iHS 36

按照Apple:

您必须调用awakeFromNib的超级实现,以便为父类提供执行所需的任何其他初始化的机会.虽然此方法的默认实现不执行任何操作,但许多UIKit类提供非空实现.您可以在自己的awakeFromNib方法中随时调用超级实现.

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

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

func awakeFromNib() {
   super.awakeFromNib()

   ... your magical code ...
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*ord 18

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

- (void)awakeFromNib
{
   [super awakeFromNib];

   ... your code ...
}
Run Code Online (Sandbox Code Playgroud)