1

我正在研究一个NSWindow子类,我遇到了一些奇怪的行为,这让我质疑我对 Windows 如何在 Mac OS X 上工作的一些假设。

NSWindow调用实例时究竟会发生什么[[NSApplication sharedApplication] hide: self]

所有不返回 NO 的窗口-(BOOL)canHide将从屏幕上消失。[NSApplication sharedApplication] unhide: self]然后,当应用程序变为活动状态或被调用时,所有窗口都会重新出现。

我曾假设这将通过拍摄当前窗口状态的快照来实现,然后调用orderOut:所有NSWindow实例,然后在调用时向后执行整个unhide:操作。

然而,情况似乎并非如此。orderOut:我的子类的方法NSWindow没有被调用..实际上它也没有被隐藏。它确实设置setCanHide:为 YES .. 发生了什么?

任何见解将不胜感激。

此致,

坦率

4

1 回答 1

2

启动仪器并亲自找出答案!在我的机器 (10.6.4) 和 32 位应用程序上,[NSApplication hide:]调用ShowHideProcess. 它记录在那里:

http://developer.apple.com/library/mac/#documentation/Carbon/Reference/Process_Manager/process_mgr_ref.pdf

然后ShowHideProcess调用CPSPostHideReqCoreGraphics 中的某些内容)。

但是没有orderOut:,实际上根本没有objc_msgSend()

你需要它做什么?还是你只是好奇?因为在大多数情况下,你应该好好听听NSApplicationWill/DidHideNotification.

于 2010-10-27T16:24:46.437 回答