【发布时间】:2017-10-13 21:25:18
【问题描述】:
我有一个带有闭包作为参数的方法,如果没有提供闭包,则默认为“虚拟”函数。但是,每当我尝试使用默认值省略参数时,编译器都会抛出错误:
调用中的参数“closureFuncWithDefault”缺少参数
插入 'parameterClosureFuncWithDefault: Void#>'
我的代码如下:
func functionWithDefault (object: SCNReferenceNode = SCNReferenceNode(),
closureWithDefault: @escaping (_ object: SCNReferenceNode)->Void = { _ in return }) {
otherClassInstance.loadObject (object, loadedHandler: { [unowned self] loadedObject in DispatchQueue.main.async {
self.otherMethod (loadedObject)
closureWithDefault (virtualObject)
}
})
}
然后从其他地方:
// some code
var objectThing = SCNReferenceNode (URL: ..... )
//
// code block...
//
functionWithDefault (object: objectThing) // <-- This throws the error.
SCN 类和此类东西不是相关的东西,而是具有默认闭包参数并能够使用它的正确方法。
【问题讨论】:
-
对我来说很好。您可以尝试清理您的项目并重建吗?
-
无关,我不建议在另一个线程上异步调用某些东西时使用
unowned。当另一个运行运行关闭时,您无法保证self是否仍然存在。使用weak。
标签: swift closures default-parameters