我很难在 Swift 中实现 NSMenuItem 的操作。通常,您在 Objective-C 中实现这样的操作:
- (void) asdf:(id)sender
在像这样在第一响应者中设置操作之后,这非常有效:
但是,在 Swift 中重写了我的视图控制器之后,似乎没有调用以下新方法:
func asdf(sender: AnyObject?)
它似乎不起作用,即使 Obj-C 和 Swift 版本都用于同一个视图控制器子类。
我很难在 Swift 中实现 NSMenuItem 的操作。通常,您在 Objective-C 中实现这样的操作:
- (void) asdf:(id)sender
在像这样在第一响应者中设置操作之后,这非常有效:
但是,在 Swift 中重写了我的视图控制器之后,似乎没有调用以下新方法:
func asdf(sender: AnyObject?)
它似乎不起作用,即使 Obj-C 和 Swift 版本都用于同一个视图控制器子类。
在 Swift 3.0 中,您可以将其定义为:
func asdf(_ sender: Any)
为什么?
如果你使用_
你可以在调用函数时删除参数名称,所以现在你可以像这样调用它:
object.asdf(object)
代替:
object.asdf(sender: object)
此外,在这种情况下,您可以使用 SwiftAny
而不是。您可以在此处AnyObject
找到有关它们之间差异的更多信息。