0
如果没有提供闭包,我有一个闭包作为默认为'虚拟'函数的参数的方法。然而,每当我试图忽略使用默认参数,编译器会引发错误:为什么我不能在Swift中忽略一个具有默认函数的闭包参数?
Missing argument for parameter 'closureFuncWithDefault' in call
Insert 'parameterClosureFuncWithDefault: <#(object) -> 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类和这些东西不是相关的东西,而是有一个默认的关闭参数并能够使用它的正确方法。
适合我。你可以尝试清理你的项目和重建? – nathan
不相关的,我不会建议在另一个线程上异步调用某些东西时使用'unowned'。您无法保证当另一个运行运行闭包时,“self”是否仍然存在。使用'弱'。 – Rob