Swift中逃脱和不排除的封闭
#ios #swift #关闭 #escaping

在迅速关闭中有两种类型 - 逃脱和非排行。

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
}