2016-07-06 161 views
1

我想使用一个方法,它使用闭包内的委托模式异步返回结果。Swift:在另一个函数中调用closure完成方法

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

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 
    } 
} 
+0

这有点难理解,你能否详细说明一下? – Alexander

+0

作为属性存储在类的关闭 – dan

+0

@AMomchilov你不明白什么具体? – xoogler

回答

0

我真的不明白你想达到什么目的。但是你可以声明函数属性并在以后使用它:

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) 
    } 
} 
+0

变量名不应该是动词或动词短语,它们应该是名词 – Alexander

相关问题