有可能在swift 2.2版本中得出结论,可以通过#selector引用Objective-C方法。
let sel = #selector(UIView.insertSubview(_:at:)) // produces the Selector "insertSubview:atIndex:"
所以以前我们使用方法的名称,比如简单的字符串:"doBangBang"
并将其称为Selector("doBangBang")
,现在我们应该使用它来引用方法MyClass.doBangBang()
并使用密钥单词#selector(MyClass.doBangBang())
?此功能是否弃用Selector
?除了减少使用错误名称执行的函数数量之外,这些改进还有什么好处?
答案 0 :(得分:2)
此功能使用Selector("methodName")
有效地弃用,并且仅使用"methodName"
或"methodName:"
作为选择器。
主要好处是你不能再在方法字符串中输入拼写错误了,正如你已在问题中说明的那样。
想象一个带选择器的方法:
..., selector: "myMethod:")
当你输入错误时会发生什么?
..., selector: "mymethod:")
它崩溃了。
使用新系统,它是类型安全的:编译器可以检查您调用的方法是否确实存在 - 不再有拼写错误,不再调用不存在的函数:
..., selector: #selector(myMethod))
因为编译器可以检查类型。我们还可以从Xcode获得自动建议和自动完成,以及所有类型安全操作的细节。