轉義關閉
來自 Swift Documentarion
@escaping
將此屬性應用於方法或函式宣告中的引數型別,以指示可以儲存引數的值以供稍後執行。這意味著允許該值超過呼叫的生命週期。具有轉義型別屬性的函式型別引數需要顯式使用 self。對於屬性或方法。
class ClassThree {
var closure: (() -> ())?
func doSomething(completion: @escaping () -> ()) {
closure = finishBlock
}
}
在上面的例子中,完成塊被儲存到閉包中,並且實際上將超出函式呼叫。因此編譯器會強制將完成塊標記為 @escaping。