【问题标题】:Run code when the NSWindow is closed using isReleasedWhenClosed使用 isReleasedWhenClosed 关闭 NSWindow 时运行代码
【发布时间】:2026-01-26 06:25:01
【问题描述】:

我正在构建一个可可应用程序,我以编程方式创建了一个 nswindow,我使用 isReleasedWhenClosedfalse。当我这样做时,我没有收到func windowWillClose 的警报。我想知道当用户在 isReleasedWhenClosed 中关闭窗口时如何执行代码

【问题讨论】:

    标签: ios swift xcode cocoa nswindow


    【解决方案1】:

    isReleasedWhenClosed 不会影响 如何 窗口关闭,它实际上只会改变窗口是否有发送到它的释放调用,如果没有其他引用它,则进行拆卸。

    如果您的windowWillClose 通知没有在您正确设置的委托上被触发,那么从技术上讲,该窗口并未关闭。如果窗口只是被“排序”,根据 API,这在技术上与“关闭”不同。

    【讨论】:

    • 有没有什么API可以在窗口被订购时调用代码?
    • 没有标准的通知没有,但是只有在你明确告诉它时,一个窗口才会被排序(“隐藏”),所以你可以控制它何时发生。如果您的窗口按照您的建议被用户关闭,那么它将被关闭,而不是排序,因此关闭通知就是您要使用的。