我想使用在闭包内使用委托模式异步返回结果的方法。

是否可以在同一类的另一个函数中引用完整块?

class A {

    func performASyncTask(input:String, complete:(result:String) -> Void) {

        let obj = Loader()
        obj.delegate = self
        obj.start()
        // Loader() returns loaderCompleteWithResult(result:String) when completed
    }

    func loaderCompleteWithResult(result:String){

        // Call complete function in performASyncTask .e.g

        complete(result); // Calls the complete function in performASyncTask
    }
}

最佳答案

我不太了解您要实现什么目标。但是您可以声明函数属性并在以后使用:

class A {
    var closureSaver: ((result:String) -> Void)?

    func performASyncTask(input:String, complete:(result:String) -> Void) {
        let obj = Loader()
        obj.delegate = self
        obj.start()

        closureSaver = complete
        complete(result: "a")
    }

    func loaderCompleteWithResult(result:String){
        closureSaver?(result:result)
    }
}

10-05 21:00
查看更多