所以我花了一些时间检查 CocoaDev,阅读 NSMenuItems 上的 Cocoa 文档,并在 Interface Builder 中进行了一些测试。
在我的应用程序中,我有一个在 Interface Builder 中设计的应用程序菜单([NSApp mainMenu])。我看到了三种可能的路径:
将我的动作响应者放在 NSApplicationDelegate 中。这对我来说似乎很奇怪,部分原因是它位于食物链的上游,部分原因是它似乎被固定住了。
创建一个子视图来监听各种 NSMenuItem 操作消息。这看起来很有用,但看起来为了让它在响应者链中,可能有一些我无法理解的魔法。
创建一个监听特定应用程序菜单内容的 NSObject,将其放入 xib 中,然后将其连接起来。在我看来,这似乎是目前最好的解决方案,因为我可以隔离东西,而不是依赖响应者链来到达特定对象。但我想知道,当我的应用程序达到足够复杂的水平时,这是否可能是一个问题,因为它篡夺了响应者链,这可能是出于易用性之外的原因。
对不起,很长的问题。有首选方法吗?谢谢!