Swift #selector 引用 Objective-C 方法



由于可以在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?除了减少使用错误名称执行的功能的数量之外,这种改进还有什么好处?

此功能

有效地弃用了使用 Selector("methodName") 以及仅对选择器使用 "methodName""methodName:"

主要好处是你不能再在方法字符串中输入拼写错误,正如你在问题中已经指出的那样。

想象一个带有选择器的方法:

..., selector: "myMethod:")

当你错别字时会发生什么?

..., selector: "mymethod:")

它崩溃了。

使用新系统,它是类型安全的:编译器可以检查你调用的方法是否确实存在 - 不再有拼写错误,不再调用不存在的函数:

..., selector: #selector(myMethod))

因为编译器可以检查类型。我们还从 Xcode 获得自动建议和自动完成功能,以及类型安全操作附带的所有细节。

相关内容

  • 没有找到相关文章

最新更新