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