我正在努力理解魔法。为什么有些类型是可分配的?这是因为代码中的任何声明,还是这些关系对我们隐藏?
我创建了一个简单的可编译函数:
func convert(_ x: CFString) -> NSString { x }
然而,当我试图对String
类型做同样的事情时,它不起作用。只有以下代码是可编译的:
func convert(_ x: CFString) -> String { x as String }
类的声明为空:
public class CFString {
}
public class CFMutableString : CFString {
}
那么它是如何理解这些类型可以相互赋值的呢?我如何找到这类类型的整个列表?
CFString和NSString在Objective c中免费桥接
https://developer.apple.com/library/archive/documentation/General/Conceptual/CocoaEncyclopedia/Toll-FreeBridgin/Toll-FreeBridgin.html
String is Swift。它被桥接到NSString而不是CFString。