macos - 使用 NSWindow 还是 NSViewController?

标签 macos cocoa

如果我只有一个窗口,其中的元素未删除/添加,我应该处理 NSWindow 中的所有事件和其他内容,还是应该创建 NSViewController?

最佳答案

一般来说,您应该尝试在尽可能深的位置处理事件。例如,如果您的窗口有一个 NSButton,那么该按钮应该负责处理其自身的点击 - 而不是窗口!当然 NSButton 有这方面的 API,例如 setAction:

有些 View 的内容对 Cocoa 来说是不透明的,您希望在其中负责事件调度。一个例子是 NSOpenGLView,您在其中渲染一些场景并需要将事件定向到场景中的组件。该建议仍然适用:覆盖 NSOpenGLView 上的事件处理程序(mouseDown: 等)并从那里分派(dispatch)。

还有更高级别的方法可用,例如[NSWindow sendEvent]。当您希望干预整个窗口的事件分派(dispatch)(例如将事件重定向到其他窗口)时,最好覆盖这些设置。一般来说,这是没有必要的,并且会使您的应用程序更加脆弱。

NSViewController 在桌面上的作用逐渐减弱(与 UIKit 相比),并且很少需要。

关于macos - 使用 NSWindow 还是 NSViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30660305/

相关文章:

objective-c - NSString 是整数吗?

iphone - 为什么这段 Objective C 代码会泄漏内存?

macos - 在 Quartz 中使用 XOR 绘图

linux - 如何使用预先指定的 Pane 数和大小启动 TMUX

objective-c - 如何打开 NSWindow 并选中窗口并使其处于焦点状态?

objective-c - 如何在另一个 NSView 下阻止 NSView 事件?

objective-c - Cocoa 应用程序处理标准 HTTP url 方案

objective-c - UILabel attributedText 和 minimumScaleFactor

swift - CoreMIDI 目标的困惑

ios - 为什么 `init` 不能用在 `NSCalendar *cal = [[NSCalendar alloc] init]` 中?