如果我实施自己的awakeFromNib
版本,我应该在方法结束时致电[super awakeFromNib]
吗?
答案 0 :(得分:88)
awakeFromNib
for UIKit (iOS) 您必须调用awakeFromNib的超级实现,以便为父类提供执行所需的任何其他初始化的机会。虽然此方法的默认实现不执行任何操作,但许多UIKit类提供非空实现。您可以在自己的awakeFromNib方法中随时调用超级实现。
awakeFromNib
for AppKit (Mac) (如果使用OS X 10.6或更高版本,则不再适用)
只有在确定您的超类提供实现时,才应调用awakeFromNib的超级实现。因为Application Kit不提供awakeFromNib方法的默认实现,所以如果父类没有实现它,则调用super会导致异常。直接父类是NSObject或NSView的类不需要调用超级实现。对于任何其他类,您可以使用NSObject的instancesRespondToSelector:class方法来确定父类是否响应awakeFromNib并调用该方法(如果有)。
答案 1 :(得分:6)
The documentation完全涵盖了这一点。
如果你想询问Cocoa Touch,你就不那么幸运了:UIKit文档没有在我能找到的任何地方明确回答这个问题。我可以建议的最好是遵循与Cocoa相同的规则。
答案 2 :(得分:0)
是的,你应该。
我实现了拖放操作,一切正常,直到我添加了自己的awakeFromNib,然后拖放了函数whichToProcess从未调用过。
直到我添加[super awakeFromNib];作为我自己的awakeFromNib中的最后一个语句,再次调用拖放函数whichTypeToProcess并再次拖放开始工作。
仅供参考 - 这是在MacOSX应用程序中。