我有一个相对冗长的任务。所以我从 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 topic和this topic。但我不知道问题是什么。
我感谢任何建议。谢谢你的时间。
答案 0 :(得分:1)
释放进度窗口控制器。