只要 Swift 类从 NSObject 扩展,我们就可以将它传递给 Objective-C 运行时并要求它为我们自省(introspection)。
我们有三种选择:
- 类
- classForCoder
- classForKeyedArchiver
. .然而,类(Class)被淘汰了。 (见图)。为什么是这样?
最佳答案
因为 class
是 Swift 中的关键字,因此任何有效的方法都不能命名为 class
。同样,您不能创建名为 for
、while
或其他关键字的方法。
我无法用我的方法重现删除线,但是,在 obj-c 中命名方法 var
(或其他关键字)使得它无法从 Swift 调用。
编辑
我错了。仍然可以使用
从 Swift 调用class
var clazz: AnyClass? = self.`class`()
但是,编译器会说:
'Class' is unavailable: use 'dynamicType' instead
所以 Edwin Vermeers 的答案是正确的。
关于 swift : Why is the class method struck out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059504/