objective-c – NSWindowController应该在windowWillClose中释放自己吗?

前端之家收集整理的这篇文章主要介绍了objective-c – NSWindowController应该在windowWillClose中释放自己吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个NSWindowController的子类,如下所示:

@interface MyController : NSWindowController <NSWindowDelegate>
...
- (void)windowWillClose:(NSNotification *)notification;
@end

这是他窗口的代表.一切正常.

但是,为了避免泄漏内存,我应该在实现中执行此操作吗?

@implementation MyController
...
- (void)windowWillClose:(NSNotification *)notification {
    ...
    [self release];
}
@end

如果我不这样做,当我用小红色关闭按钮关闭窗口时,会调用windowWillClose :,在Instrument中我看到NSWindow被释放但不是MyController …

这是“这种方式”吗?还是我冒风险?

注意:使用Command-W,窗口和控制器被正确释放,因为我正在AppDelegate中捕获此操作,该实例已经实例化了所有这个窗口&控制器,因此知道如何/何时释放它们.但是小红色关闭按钮执行关闭:它自己和我所取得的最好的是捕获windowWillClose:作为一个窗口委托……

解决方法

如果您希望NSWindowController自行释放,您应该使用:

- (void)windowWillClose:(NSNotification *)notification
{
    [self autorelease];
}

autorelease消息确保在释放NSWindowController之前正确处理close事件.

你也可以查看这个SO entry.

猜你在找的cocoa相关文章