如果我只有一个窗口,其中的元素未删除/添加,我应该处理 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/