如何检查 NSWindow 是否打开

How to check if an NSWindow is open

我有一个可以关闭和重新打开的 NSWindow(我调用了 [setReleasedWhenClosed: NO])。如何以编程方式检查它是打开还是关闭?

我已经阅读了文档并进行了 Google 搜索,但没有找到一种合理的方法来执行此操作。 [isVisible] 已弃用。 [occlusionState] 不是我想要的。我已经使用通知解决了这个问题,但我不敢相信 属性 或 NSWindow 上没有一些方法可以做到这一点

您利用了 NSWindow 的屏幕 属性。如果 window 在屏幕外,它将 return 为零。请检查 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/index.html#//apple_ref/occ/instm/NSWindow/screen

-[NSWindow isVisible] 并没有真正弃用。

对于 10.10 SDK,Apple 将一堆非正式属性转换为声明属性。非正式的 属性 是只声明了访问器的一个,可能只是一个 getter 方法。声明的 属性 使用 @property.

因此,他们删除了如下内容:

- (BOOL) isVisible;

并添加:

@property (getter=isVisible, readonly) BOOL visible;

请注意,两者仍然暗示存在具有 BOOL return 类型的 -isVisible getter。

他们用来根据对 headers 的更改生成文档的工具导致文档声称 -isVisible 已被弃用,但这是错误的。

但请注意,-isVisible 对已最小化或 "open" 但在隐藏应用程序中的 window 报告错误。