根据 Apple 的“Using Swift with Cocoa and Objective-C”,“在 Swift 中,您可以互换使用每对免费桥接 Foundation 和 Core Foundation 类型”。这使得使用 Core Foundation 听起来比实际更简单......
我正在尝试使用从 CoreText 返回的 CFArray。我有这个代码:
let lines: CFArrayRef = CTFrameGetLines(frame)
我看到有两种可能的方法来访问该数组的成员。现在两者都不适合我。
方式 #1 - 直接使用 CFArray
let line: CTLineRef = CFArrayGetValueAtIndex(lines, 0)
这会产生错误“'ConstUnsafePointer'无法转换为'CTLineRef'”。铸造似乎并没有改变这个错误。
同样,我很想将行“可互换地”用作 Swift 数组,就像它说的那样。然而,
let line: CTLineRef = lines[0]
产生错误“'CFArrayRef'没有名为'下标'的成员”
方法 #2 - 将 CFArray 转换为 Swift 数组
var linesArray: Array = [CTLineRef]()
linesArray = bridgeFromObjectiveC(lines, linesArray.dynamicType)
在这里,我声明了一个 Swift 数组并将其设置为等于桥接的 CFArray。编译时没有错误,但是当我运行它时,我在第二行遇到 EXC_BREAKPOINT 崩溃。也许我在这方面没有正确使用 Swift 语言......