在迅速关闭中有两种类型 - 逃脱和非排行。
1. 非排放 - 这是闭合的默认类型。这表明在功能中,控件一旦消失就不会恢复。
func sumOfInt(a:Int,b:Int,handler:((Int)->())){
let c = a + b
handler(c)
}
上面的函数采用2个整数参数,并返回处理程序中的总和。
在此处执行管线处理程序(C)后将消失,并且不会返回。
2. @escaping - 在这种类型的闭合控件中,即使执行了代码块后,也可以返回功能。例如URL会话任务。在这种类型中,即使控件又回来,可以访问本地属性,因此我们需要将闭合标记为@escaping
以通知swift。
func sumWithDelay(a:Int,b:Int,handler:@escaping((Int)->())){
let c = a + b
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
handler(c)
//control comes back in given duration
}
//control will be gone
}