根据Apple文档:
当调用带有函数指针参数的函数时,可以传递顶级Swift函数,闭包文字或nil。
我在Apple文档中试过这个例子:Apple Developer
func customCopyDescription(_ p: UnsafeRawPointer?) -> Unmanaged<CFString>? {
// return an Unmanaged<CFString>? value
}
var callbacks = CFArrayCallBacks(
version: 0,
retain: nil,
release: nil,
copyDescription: customCopyDescription,
equal: { (p1, p2) -> DarwinBoolean in
// return Bool value
}
)
但我在Xcode中收到错误消息:(copyDescription:customCopyDescription error)
C函数指针只能通过对“函数”的引用形成。或文字闭包
正如苹果文档中所提到的,customCopyDescription可以作为顶级swift函数传递,但它似乎在文档中出现了问题。
如何将customCopyDescription func作为swift函数传递给CFArrayCallBacks(不是封闭文字)?
答案 0 :(得分:3)
customCopyDescription
需要是免费功能,而不是方法。当我将代码复制到Xcode中时,我只在customCopyDescription
在一个类中时才收到错误消息,而不是其他。
添加占位符返回值并将customCopyDescription
放在文件范围后,代码编译没有问题