窗口关闭时释放NSWindowController
我正在构建一个Cocoa应用程序,并且对使用窗口控制器有疑问。这个想法是,如果用户从菜单栏中选择“新建”,则会创建MyWindowController的实例,该实例是NSWindowController的子类,并显示MyWindow.xib中的新窗口。
我正在处理应用程序委托中的操作。从我在搜索类似以下内容之后所看到的结果,可以完成。一旦显示了窗口,我就没有理由再存储指向窗口控制器的指针了,因为我分配了它,所以我也可以在显示窗口之前自动释放它。
[[[[MyWindowController alloc] init] autorelease] showWindow:self];
由于此后不久将释放该窗口,因此该窗口将短暂显示在屏幕上,然后消失。我找到了一种解决方案,其中将窗口控制器保留在-showWindow:方法中,并使其在获得windowWillClose通知后立即释放。
- (IBAction)showWindow:(id)sender
{
[self retain];
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification
object:self.window
queue:nil
usingBlock:^(NSNotification *note) {
[self release];
}];
[super showWindow:sender];
}
有一个更好的方法吗?我已经搜索了Apple文档,但没有找到任何可以使用的实践方法。听起来应该很基础,所以也许我只是在搜索错误的术语。
没有找到相关结果
已邀请:
2 个回复
漂汀拦
貉骂