NSControl 的 addTarget() 方法在哪里?

Where is NSControl's addTarget() method?

所以我已经好几年没看过 Swift/Cocoa 了。我刚刚使用 Xcode 10.0 创建了一个简单的 macOS 应用程序,发现 NSControl 不再具有 addTarget(...) 方法。看起来它被替换为 target 属性 类型 id.

由于我需要指定操作(例如单击)、要调用的对象以及调用该对象的选择器,现在我该如何为按钮点击等操作添加处理程序。


解法:

let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.target = self
statusItem.button?.action = #selector(didClick(_:))

它仍然存在...您可能想复习一下文档。

https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

是的,基于方法的语法 foo.addTarget(self) 已被基于 属性 的语法 foo.target = self 取代。它仍然存在于 UIKit 中,因为在 Cocoa Touch 中您还必须指定控制事件。

并且所有相关的 NSControl 子类都有 init 方法来传递 targetaction