在OC类中引入swift类,获取swift类的对象的class方法返回的是什么? 如果swift类继承自OC的类,返回的又是什么?
class Dog: NSObject {
}
class Child: Person {
}
@interface Person : NSObject
@end
以上三个类中,Dog是swift类,Person是OC类,Child是继承Person的子类 在OC环境下通过lldb调试获取到类名如下:
可以看出如果在OC类中引用swift类,swift的类名包含了个OCClass.的前缀,其中OCClass是工程名,也就是说类名是:工程名.类的声明的名称
所以在OC中使用NSClassFromString方法调用swift类的声明的名称返回的是nil
如果在swift类中引入OC的类返回的是什么,引入swift的类返回的又是什么,如果是swift类不继承NSObject呢
class Teacher {
}
Teacher是一个无父类的swift类,只能在swift类环境中使用,通过lldb,如下图所示:
- 如果swift类继承自NSObject的类及其子类,返回的类名:项目工程名.声明的名称
- 如果swift类未继承NSObject,返回的是类名是:声明的名称
- OC类不管在swift还是OC环境中,返回的类名始终是:声明的名称