我正在研究一个NSWindow
子类,我遇到了一些奇怪的行为,这让我质疑我对Windows OS如何在Mac OS X上工作的一些假设。
调用NSWindow
时[[NSApplication sharedApplication] hide: self]
个实例会发生什么?
所有未向-(BOOL)canHide
返回NO的窗口将从屏幕上消失。然后,当应用程序变为活动状态或调用[NSApplication sharedApplication] unhide: self]
时,所有窗口都会重新显示。
我曾假设这可以通过获取当前窗口状态的快照,然后在所有orderOut:
个实例上调用NSWindow
然后在unhide:
为orderOut:
时向后执行整个操作来实现调用。
NSWindow
子类的setCanHide:
方法未被调用..实际上它也没有被隐藏。它确实将{{1}}设置为YES但是......发生了什么?
非常感谢任何见解。
致以最诚挚的问候,
谢
答案 0 :(得分:2)
启动仪器并自行查找!在我的计算机(10.6.4)和32位应用程序上,[NSApplication hide:]
调用ShowHideProcess
。它记录在那里:
ShowHideProcess
然后调用CPSPostHideReq
( CoreGraphics中的某些内容)。
但是没有orderOut:,实际上根本没有objc_msgSend()
。
你需要什么?或者你只是好奇?因为在大多数情况下,你应该好好倾听NSApplicationWill/DidHideNotification
。