objective-c - NSApp隐藏了什么: actually do with the NSWindow instances?

标签 objective-c cocoa macos nswindow nsapplication

我正在开发 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 。那里有记录:

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

ShowHideProcess然后调用CPSPostHideReq (CoreGraphics 中的某些内容)。

但是没有orderOut:,实际上没有objc_msgSend()完全没有。

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

关于objective-c - NSApp隐藏了什么: actually do with the NSWindow instances?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034320/

相关文章:

iOS sqlcipher fmdb inTransaction “File is encrypted or is not a database”

objective-c - 基本MVC : set variable to NSTextField input in different classes

objective-c - 我该如何在 cocoa 中处理这个问题?从 plist 文件中检索条目?

cocoa - FFMPeg 与 xcode 集成

ios - Xcode 10 (10A255) 错误 : <unknown>:0: error: duplicate input file

mysql - 在 MySQL 中设置大型数据库以在 R 中进行分析

objective-c - NSRulerView 如何正确对齐行号与正文

objective-c - Xcode 文本渲染错误?

ios - 如何在 Objective C 中的 UIViewController 上添加 UITabbar Controller 和 UINavigation 栏

objective-c - 创建单一尺寸的动态 UILabel 字体