我有一个 NSViewController 的子类,它从 nib 加载其视图(使用 initWithNibName:bundle: 并且它是该 nib 的文件所有者)。
加载笔尖后我需要进行一些初始化,并且我希望我的代码是最兼容的:
- 在 ios 中:有 viewDidLoad 方法可以做到这一点
- 在 osx 中:在雪豹中,没有像 viewDidLoad 这样的方法,但是 awakeFromNib 也会在文件的 nib 所有者上调用
所以我的问题是:
- awakeFromNib 是否也在 Lion 中的 nib 文件的所有者上调用?
- 如果我使用 awakeFromNib,我需要调用 [super awakeFromNib] 吗?(是 NSViewController 实现 awakeFromNib 吗?)
- 如果答案 1 是肯定的,这是一个好的解决方案吗?:
- (void)initAfterNibLoaded { ... } - (void)viewDidLoad { // Code for ios [self initAfterNibLoaded]; } - (void)awakeFromNib { // Code for osx // Not sure if necessary [super awakeFromNib]; [self initAfterNibLoaded]; }
如果答案 1 是否定的,这是一个好的解决方案吗?:
- (void)viewDidLoad {
// Initialize after nib loaded
}
#ifndef TARGET_OS_IPHONE
- (void)loadView {
// Call parent method
[super loadView];
// Simulate viewDidLoad method
[self viewDidLoad];
}
#endif
谢谢