在大多数情况下,Swift在类型安全方面是对Objective-C的巨大改进。一个明显的例外是选择器。在Objective-C中,使用表达式@selector(notARealSelector :)将给出编译器警告。 Swift等效项Selector(“notARealSelector:”)将始终进行编译,但会在运行时失败。
在Swift中使用选择器是否有类型安全的方式,所以我可以使用需要它们的Objective-C API?
我的应用程序中有很多NSNotification观察者,并希望进行某种编译时检查,我没有在我的选择器中打字。
编辑:具体的用例是NSNotificationCenter.addObserver。
类型安全选择器刚刚在Xcode 7.3 beta 4中发布:
let sel = #selector(insertSubview(_:aboveSubview:)) // sel has type
Selector现在是一流的公民,并附带了一些很好的Swift编译器警告。如果需要,您仍然可以传递一个字符串:
let sel = Selector("propertyName")
看到一个更完整的答案在这里:@selector() in Swift?
Xcode发行说明:http://adcdownload.apple.com/Developer_Tools/Xcode_7.3_beta_4/Xcode_7.3_beta_4_Release_Notes.pdf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。