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

推荐答案

awakeFromNib for UIKit (iOS):

您必须调用awakeFromNib的超级实现,以使父类有机会执行它们所需的任何额外初始化.尽管此方法的默认实现不起任何作用,但许多UIKit类提供非空实现.您可以在自己的awakeFromNib方法中随时调用超级实现.

awakeFromNib for AppKit (Mac):

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

只有在确定超类提供了实现的情况下,才应该调用awakeFromNib的超级实现.因为应用程序工具包没有提供awakeFromNib方法的默认实现,所以如果父类没有实现它,调用super会导致异常.直接父类为NSObject或NSView的类不需要调用超级实现.对于任何其他类,可以使用NSObject的InstanceRespondToSelector:class方法确定父类是否响应awakeFromNib,如果响应,则调用该方法.

Objective-c相关问答推荐

iPhone 可达性判断

使用 AVAudioplayer 在后台播放音乐

tableView:canEditRowAtIndexPath: 弹出 viewController 时崩溃

防止同时多个按钮

为什么 UICollectionView 的 UICollectionViewCell 没有在用户时突出显示?

pathForResource 返回 null

从 Storyboard 实例化视图控制器与创建新实例

在objective-c中创建现在的时间戳作为NSNumber

检测到与加载的库不匹配的 UUID

块引用作为Objective-C中的实例变量

NSUInteger 不应该在格式字符串中使用吗?

.delegate=self 是什么意思?

判断用户是否在连续的 UISlider 上完成滑动?

访问当前视图的父视图 - iOS

使用 OpenCV 在 iOS 中进行透视变换 + 裁剪

Cocoa 的依赖注入框架?

无法将 searchBar 设置为 firstResponder

Objective-c 中 SEL 类型的属性

哪个是正确的,nil 或 NULL,来标记没有 Objective-C 块?

@package 指令在 Objective-C 中的作用是什么?