nib からビューをロードする NSViewController のサブクラスがあります (initWithNibName:bundle: を使用し、その nib のファイルの所有者です)。
ペン先がロードされた後、いくつかの初期化を行う必要があり、コードを最も互換性のあるものにしたい:
- iOSの場合:それを行うためのviewDidLoadメソッドがあります
- osx の場合: ユキヒョウでは、viewDidLoad のようなメソッドはありませんが、ファイルの nib の所有者でも awakeFromNib が呼び出されます。
だから私の質問は:
- 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 が NO の場合、これは良い解決策ですか? :
- (void)viewDidLoad {
// Initialize after nib loaded
}
#ifndef TARGET_OS_IPHONE
- (void)loadView {
// Call parent method
[super loadView];
// Simulate viewDidLoad method
[self viewDidLoad];
}
#endif
ありがとうございました