gpt4 book ai didi

objective-c - 我在 NSWindow 上调用 'release' 而不是 'close' ?

转载 作者:行者123 更新时间:2023-12-03 16:20:35 25 4
gpt4 key购买 nike

当我完成弹出 NSWindow 时,我调用以下代码行:

if (imageDroppedActionPopup) {
[[self window] removeChildWindow:imageDroppedActionPopup];
[imageDroppedActionPopup orderOut:nil];
[imageDroppedActionPopup close];
imageDroppedActionPopup = nil;
}

我现在想知道是否可以替换

[imageDroppedActionPopup close];

[imageDroppedActionPopup release];

它似乎工作正常。但我想知道这是否正确。

我这样做的原因是,如果我出于某种原因使用 close,应用程序焦点将返回到主文档窗口,而不是当前的 NSWindowController 窗口,即上面提到的弹出父窗口。

最佳答案

close 从屏幕上删除窗口,release 减少对象的保留计数器,并且可能会或可能不会导致它被释放。

它似乎有效,因为被释放意味着从屏幕上删除,但这些方法永远不能相互替代。即使您是唯一的所有者,您也永远无法确定release会导致立即释放(因此窗口也不会立即消失),因为该窗口可能会被其他人临时保留。

当您需要关闭窗口时,调用close。并且严格按照内存管理规则,您只能对保留、分配或复制的对象调用release

考虑到用 release 替换 close 并没有导致崩溃,我认为你两者都需要。

关于objective-c - 我在 NSWindow 上调用 'release' 而不是 'close' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734508/

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