2016-07-06 163 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

相關問題