gpt4 book ai didi

objective-c - NSWindowController 是否应该在 windowWillClose :? 中释放自己

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:13 24 4
gpt4 key购买 nike

我有一个像这样的 NSWindowController 的子类:

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

是他窗口的delegate。一切正常。

但是,为了避免内存泄漏,我应该在实现中这样做吗?

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

如果我不这样做,当我用红色的小关闭按钮关闭窗口时, windowWillClose: 被调用,并且在 Instrument 中我看到 NSWindow 被释放但 MyController 没有被释放...

这是这样做的“方式”吗?还是我在冒险?

注意:使用 Command-W 可以正确释放窗口和 Controller ,因为我在 AppDelegate 中捕获了这个 Action ,AppDelegate 已经实例化了所有这个窗口和 Controller ,因此知道如何/何时释放它们。但是红色的小关闭按钮 performClose: 是它自己的,我所取得的最好成绩是捕捉 windowWillClose: 作为窗口委托(delegate)...

最佳答案

如果你想让 NSWindowController 释放自己,你应该使用:

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

autorelease 消息确保在释放 NSWindowController 之前正确处理关闭事件。

你也可以查看这个SO entry .

关于objective-c - NSWindowController 是否应该在 windowWillClose :? 中释放自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com