抱歉这些问题
我有 4 个关于 swift 中的选择器的问题。
第一个问题
我想知道在 swift 中使用选择器的正确方法是什么
closeBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Stop, target: self, action: Selector("closeBarButtonItemClicked:"));
对比
closeBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Stop, target: self, action: "closeBarButtonItemClicked:");
我们应该立即使用 Selector("methodName:") 还是 "methodName:"?
两种方法都有效,但哪一种方法正确?
第二个问题
我们如何在 Swift 中调用带参数的函数?假设我想调用这样的函数
func methodName(parameterOne : String, parameterTwo: String)
第三个问题
我们如何在 swift 中使用 Selector 调用类型方法?有可能吗?
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
第四个问题
Selector 中函数名后面那个冒号的作用是什么?
最佳答案
@ad121 的回答很好——只是想为 #1 添加一点上下文:
Selector
类型已在 Swift 中扩展为 StringLiteralConvertible
。任何时候需要 Selector
实例时,您都可以提供一个字符串文字,然后将为您创建一个 Selector
实例。这意味着您还可以从字符串文字手动创建一个 Selector
实例:
let mySelector: Selector = "methodName:withParameter:"
请注意,这并不意味着 String
可以与 Selector
互换使用——这仅适用于字符串文字。以下将失败:
let methodName = "methodName:withParameter:"
let mySelector: Selector = methodName
// error: 'String' is not convertible to 'Selector'
在那种情况下,您需要自己实际调用Selector
构造函数:
let methodName = "methodName:withParameter:"
let mySelector = Selector(methodName)
关于swift - 关于 Swift 选择器的 4 个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184350/