我安装了Xcode 8.0 beta(8S128d)。现在我收到一些警告:
Method possibly missing a [super awakeFromNib] call
所有awakeFromNib
方法中的。 在这种情况下,我需要调用这个超类的方法吗?
答案 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 ...
}