在Swift String
中实现为struct
,而在目标C NSString
中实现为Class
。由于struct
是值类型,而类是引用类型。然后编译器如何使用强制转换将struct
转换为Class
。
当我们在下面编写代码时,它会正常工作:
let swiftString : String = "Swift String"
print("Cast as NSString : \(swiftString as? NSString)")
这已成功将string
投射到NSString
。
虽然Type Casting的规则建议您只能从同一个类层次结构中转换对象。
类型转换是一种检查实例类型或处理的方法 该实例作为某个地方的不同超类或子类
在其自己的类层次结构中。
当我尝试使用struct
对象投射Class
对象时,它会失败。
那么Apple使用什么机制让Swift将struct
投射到Class
?