我应该拨打[super awakeFromNib]吗?

cfi*_*her 40 cocoa objective-c

如果我实现自己的版本awakeFromNib,我应该[super awakeFromNib]在我的方法结束时调用吗?

ma1*_*w28 90

awakeFromNib对于UIKit(iOS):

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

awakeFromNib对于AppKit(Mac):

(如果使用OS X 10.6或更高版本,则不再适用)

只有在确定您的超类提供实现时,才应调用awakeFromNib的超级实现.因为Application Kit不提供awakeFromNib方法的默认实现,所以如果父类没有实现它,则调用super会导致异常.直接父类是NSObject或NSView的类不需要调用超级实现.对于任何其他类,您可以使用NSObject的instancesRespondToSelector:class方法来确定父类是否响应awakeFromNib并调用该方法(如果有).


Pet*_*sey 7

文档完全涵盖了这一点.

如果您打算询问Cocoa Touch,那么您就不那么幸运了:UIKit文档无法在我能找到的任何地方明确回答这个问题.我可以建议的最好是遵循与Cocoa相同的规则.