Jas*_*ues 5 objective-c-runtime swift
只要Swift类从NSObject扩展,我们就可以将它传递给Objective-C运行时并要求它为我们内省.
我们有三种选择:
..但是课程被打破了.(见图).为什么是这样?

那是因为class是Swift中的关键字,因此无法命名任何有效的方法class.以同样的方式,你不能创建一个命名的方法for,while或其他关键字.
我无法使用我的方法重现删除,但是,var在obj-c中命名方法(或其他关键字)使得无法从Swift调用它.
编辑
我错了.仍然可以class使用Swift 来调用
var clazz: AnyClass? = self.`class`()
Run Code Online (Sandbox Code Playgroud)
然而,编译器说:
'Class'不可用:改用'dynamicType'
所以Edwin Vermeers的答案是正确的.
正如您在文档中看到的那样,它仅在Objective C中可用,而不是在swift中.请参阅:https://developer.apple.com/documentation/objectivec/nsobject/1571950-class
我认为这是因为AnyObject为您提供了足够的信息(比NSObject更多),例如您可以NSStringFromClass(BaseObject)在swift中执行,而不是 NSStringFromClass([BaseObject class])在Objective C中执行的操作.
| 归档时间: |
|
| 查看次数: |
1824 次 |
| 最近记录: |