【发布时间】:2018-02-04 10:55:27
【问题描述】:
根据苹果文档:
调用带有函数指针参数的函数时,您可以传递顶级 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 错误)
C 函数指针只能由对 'func' 或文字闭包的引用构成
正如苹果文档中提到的,customCopyDescription 可以作为顶级 swift 函数传递,但文档中似乎有问题。
如何将 customCopyDescription 函数作为 swift 函数传递给 CFArrayCallBacks(不是闭包文字)?
【问题讨论】:
-
你把它放在类定义中了吗?
customCopyDescription需要是一个全局函数。 – 另见How to use instance method as callback for function which takes only func or literal closure。
标签: ios swift pointers function-pointers