在 Swift 中实施响应程序操作
Implementing responder action in 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)
此外,对于 Swift,在此上下文中您将使用 Any
而不是 AnyObject
。您可以找到更多关于 here.
之间差异的信息
我在为 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)
此外,对于 Swift,在此上下文中您将使用 Any
而不是 AnyObject
。您可以找到更多关于 here.