我正在开发 NSWindow
子类,我遇到了一些奇怪的行为,这让我质疑我关于 Windows 如何在 Mac OS X 上工作的一些假设。
NSWindow
到底发生了什么?当 [[NSApplication sharedApplication] hide: self]
时的实例被称为?
所有不向 -(BOOL)canHide
返回 NO 的窗口从屏幕上消失。然后,当应用程序变为事件状态时,所有窗口都会重新出现或 [NSApplication sharedApplication] unhide: self]
被调用。
我曾假设这可以通过拍摄当前窗口状态的快照,然后调用 orderOut:
来实现。全部NSWindow
实例,然后在 unhide:
时向后执行整个过程。被调用。
然而,情况似乎并非如此。 orderOut:
我的方法NSWindow
子类没有被调用..事实上它也没有被隐藏。它确实设置了 setCanHide:
是的,但是……发生了什么事?
任何见解都将非常感激。
最诚挚的问候,
弗兰克
最佳答案
启动 Instruments 并亲自找出答案!在我的机器 (10.6.4) 和 32 位应用程序上,[NSApplication hide:]
来电 ShowHideProcess
。那里有记录:
ShowHideProcess
然后调用CPSPostHideReq
(CoreGraphics 中的某些内容)。
但是没有orderOut:,实际上没有objc_msgSend()
完全没有。
你需要它做什么?或者你只是好奇?因为在大多数情况下,您应该很好地监听 NSApplicationWill/DidHideNotification
.
关于objective-c - NSApp隐藏了什么: actually do with the NSWindow instances?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034320/