我正在学习如何使用 Cocoa/Objective-C 创建 osx 应用程序。我正在编写一个简单的应用程序,它将我已经完成的两个不同的教程链接在一起。启动时,选择窗口会加载 2 个按钮,一个按钮加载一个窗口,另一个按钮加载另一个窗口。单击任一按钮时,选择窗口将关闭。
选择窗口控制器对象已添加到 MainMenu.xib 文件中,因此它是在启动时创建的。然后使用 awakeFromNib 消息打开窗口。
我想要一个按钮的结果来打开 ADC 网站上的“轨道控制器”教程应用程序。动作如下所示:
- (IBAction)trackButton:(id)sender {
TMTrackController *trackController = [[TMTrackController alloc] init];
[self.window close];
}
我向 TMTrackController 类添加了一个 init 方法,如下所示:
- (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 的“关闭时释放”框,它也会中断。
这样做的正确方法是什么?