Cocoa/Objective-C を使用して osx アプリケーションを作成する方法を学んでいます。私が経験してきた2つの異なるチュートリアルをリンクする簡単なアプリを書いています。起動時に選択ウィンドウが 2 つのボタンで読み込まれます。1 つのボタンで 1 つのウィンドウが読み込まれ、もう 1 つのボタンでもう 1 つのウィンドウが読み込まれます。いずれかのボタンをクリックすると、選択ウィンドウが閉じます。
選択ウィンドウ コントローラー オブジェクトが MainMenu.xib ファイルに追加されたため、起動時に作成されます。ウィンドウは、awakeFromNib メッセージを使用して開かれます。
1 つのボタンの結果で、ADC Web サイトから「トラック コントローラー」チュートリアル アプリケーションを開くことができます。アクションは次のようになります。
- (IBAction)trackButton:(id)sender {
TMTrackController *trackController = [[TMTrackController alloc] init];
[self.window close];
}
次のような init メソッドを TMTrackController クラスに追加しました。
- (id) init {
if (self = [super init]) {
[self showWindow];
TMTrack *myTrack = [[TMTrack alloc] init];
myTrack.volume = 50;
self.track = myTrack;
[self updateUserInterface];
return self;
}
else {
return nil;
}
}
- (void) showWindow {
if(!self.window) {
[NSBundle loadNibNamed:@"trackWindow" owner:self];
}
[self.window makeKeyAndOrderFront:self];
}
これが最善の方法であるかどうかはわかりません。choiceController クラスが閉じられるとリリースされ、TMTrackController クラスも削除されることがわかっているからです。ただし、ChoiceWindow.xib の「閉じたときに解放する」ボックスのチェックを外しても、壊れます。
これを行う正しい方法は何ですか?