关闭窗口并释放NSWindowController

时间:2013-05-22 07:06:03

标签: objective-c osx-mountain-lion nswindowcontroller

我有一个相对冗长的任务。所以我从 AppDelegate 中打开一个单独的窗口( NSWindowController )来显示进度。它就像

//AppDelegate.m
if (self.progresswindow == nil) {
    self.progresswindow = [[ProgressController alloc] initWithWindowNibName:@"ProgressController"];
}

[progresswindow showWindow:self];
//[[progresswindow window] setReleasedWhenClosed:NO];
[NSApp runModalForWindow:progresswindow.window];

任务完成后,进度窗口将自行关闭。

//ProgressController.m
[NSApp stopModal];
[self close];

工作正常。但是,当我单击一个按钮以使用同一窗口启动另一个任务会话时,应用程序将不会运行任务,尽管它打开了。似乎最后一个实例尚未发布。进度窗口包含以下行。

- (void)windowDidLoad {
    NSLog(@"Hey!");
}

第二次不会调用NSLog。我不知道我做错了什么?从AppDelegate调用 setReleasedWhenClosed 无效。无论如何,我启用了释放时关闭复选框。我读了一些类似于我需要在different topic中观察 NSWindowWillCloseNotification 进度窗口的内容,以便我可以在关闭时释放它。但我正在使用 ARC 。所以我不能手动释放它,可以吗?同时,如果我打开Apple的样本( TableViewPlayground ),他们似乎会使用此通知。此外,我已阅读this topicthis topic。但我不知道问题是什么。

我感谢任何建议。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

释放进度窗口控制器。