什么是Swift中的Objective-C id?

Dou*_*son 58 objective-c swift

我正在尝试使用@IBAction将按钮单击事件绑定到Swift方法.在Objective-C中,IBAction的参数类型是id.什么是Swift中的id等价物?

Dou*_*son 87

斯威夫特3

Any,如果你知道发件人永远不会nil.

@IBAction func buttonClicked(sender : Any) {
    println("Button was clicked", sender)
}
Run Code Online (Sandbox Code Playgroud)

Any?,如果发件人可以nil.

@IBAction func buttonClicked(sender : Any?) {
    println("Button was clicked", sender)
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

AnyObject,如果你知道发件人永远不会nil.

@IBAction func buttonClicked(sender : AnyObject) {
    println("Button was clicked", sender)
}
Run Code Online (Sandbox Code Playgroud)

AnyObject?,如果发件人可以nil.

@IBAction func buttonClicked(sender : AnyObject?) {
    println("Button was clicked", sender)
}
Run Code Online (Sandbox Code Playgroud)

  • 或者有时候`AnyObject?`,取决于你想要处理nil的方式. (11认同)