【发布时间】:2016-10-23 12:25:19
【问题描述】:
我定义了一个带有通用闭包参数的函数,如下所示:
final class Utils {
static func asyncTask<T>(task: () -> T, main: (res: T) -> Void) {
dispatch_async(dispatch_get_global_queue(0, 0)) {
let result = task()
dispatch_async(dispatch_get_main_queue()) {
main(res: result)
}
}
}
}
那么,我称之为:
Utils.asyncTask({ () -> Int? in
let rows = self.cursor.db.query(true)
if !rows.isEmpty {
return (rows[0] as? BookMark)?.rowId
}
return nil
}) { rowId in
}
但是我得到了一个编译时错误:
无法转换 '() -> Int?' 类型的值到预期的参数类型 '() -> _'
为什么?
Swift 确实支持泛型闭包作为函数参数,不是吗?
有人可以帮助我吗?
谢谢。
【问题讨论】:
-
对我来说编译得很好——也许尝试清理你的构建文件夹?此外,如果您在操场上,请在一个完整的项目中尝试一下。