Swift -为什么CFString和NSString是可分配的?



我正在努力理解魔法。为什么有些类型是可分配的?这是因为代码中的任何声明,还是这些关系对我们隐藏?

我创建了一个简单的可编译函数:

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。

相关内容

最新更新