mat*_*att 13
这是一个巨大的变化.基本上,这关闭了语言中最大的崩溃漏洞.
如果您将Selector形成为字符串文字,并且形成错误 - 这太简单了 - 或者如果您正确形成但有问题的方法没有暴露给Objective-C,那么您将在运行时因可怕的Unrecognized而崩溃选择器控制台消息 - Objective-C和Swift中最常见的崩溃.(对"无法识别的选择器"执行堆栈溢出;您将看到我的意思.)
现在,#selector语法意味着您将使用函数引用形成Selector ,编译器将在编译时检查该函数引用.如果你犯了一个错误,编译器会阻止你死.如果你做得对,编译器会为你正确地构建选择器.你不需要知道任何关于如何形成选择串; 编译器完成所有工作.因此,以这种方式崩溃的可能性有效地降低到零."无法识别的选择器"崩溃作为一个门槛死了.
此#selector更新允许您使用自动完成功能.使用字符串文字时,您可以添加一个拼写错误,这会产生运行时错误.
只是要补充一点,当在Xcode中使用迁移工具时,Xcode会将您的选择器更改为:
#selector(MyController.myMethod)
Run Code Online (Sandbox Code Playgroud)
删除类的名称可以使它更清洁,如下所示:
#selector(myMethod)
Run Code Online (Sandbox Code Playgroud)
\xe2\x80\x9c在 Swift 2.2 之前,选择器是字符串文字,很容易出错,因为我们作为人类发明的,只要有机会在没有自动完成的情况下编写某些内容,仍然会导致拼写错误。\xe2\x80\x9d
\n\nhttps://medium.com/swift-programming/swift-selector-syntax-sugar-81c8a8b10df3#.8ki9dd38j
\n| 归档时间: |
|
| 查看次数: |
3060 次 |
| 最近记录: |