0

我有一个相对冗长的任务。所以我从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无效。无论如何,我启用了“关闭时释放”复选框。我读到了类似我需要在不同主题中观察进度窗口的NSWindowWillCloseNotification的内容,以便在它关闭时释放它。但我正在使用ARC。所以我不能手动释放它,可以吗?同时,如果我打开 Apple 的示例(TableViewPlayground),他们似乎使用了这个通知。此外,我已经阅读了这个主题这个主题。但我不知道问题是什么。

我很感激任何建议。感谢您的时间。

4

1 回答 1

1

释放进度窗口控制器。

于 2013-05-22T07:28:23.170 回答