美文网首页
Swift 3.0 @escaping 逃逸闭包含义

Swift 3.0 @escaping 逃逸闭包含义

作者: Frekle | 来源:发表于2017-04-01 10:08 被阅读90次

当我们做一个请求的时候,往往会在请求结束的时候写一个闭包,让执行者在结束请求时收到请求结果,类似下面这种写法:

func startRequest(callBack: ()->Void ) {
    DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() +           1) { 
        callBack()
    }
}

但是这种写法,编译时会报错,只有加上在callback前加上@escaping时才能编译通过

func startRequest(callBack: @escaping ()->Void ) {
    DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() +           1) { 
        callBack()
    }
}

那么这里的@escaping是什么意思呢?

@escaping的含义

如果这个闭包是在函数执行完后才被调用,调用的地方超过了这函数的范围,所以叫逃逸闭包。

相关文章

  • Swift: @escaping 和 @noescaping 是

    @noescaping: 非逃逸闭包类型@escaping: 逃逸闭包类型 Swift 3.0 之后,传递闭包...

  • iOS开发随笔

    1.swift3.0后的闭包默认是非逃逸闭包, 所以在逃逸闭包前需要添加@escaping2.instrument...

  • iOS swift 逃逸闭包(@escaping)和非逃逸闭

    iOS swift 逃逸闭包(@escaping)和非逃逸闭包 (@noescaping) 逃逸闭包: 逃逸闭包...

  • Swift中的闭包

    在Swift中有两种闭包,逃逸闭包(@escaping)和非逃逸闭包(@nonescaping)。从Swift 3...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • Swift 3.0 @escaping 逃逸闭包含义

    当我们做一个请求的时候,往往会在请求结束的时候写一个闭包,让执行者在结束请求时收到请求结果,类似下面这种写法: 但...

  • 闭包的逃逸

    在swift3.0以前,一个函数的参数的闭包的捕捉策略是escaping,如果是一个非逃逸闭包,需要显示的添加声明...

  • Escaping Closures - Swift

    逃逸闭包和非逃逸闭包 逃逸闭包(escaping closure),什么是逃逸闭包?苹果官方给的定义是:当一个闭包...

  • @escaping swift逃逸闭包和非逃逸闭包

    使用@escaping关键字的闭包是逃逸闭包 闭包默认是非逃逸闭包 逃逸闭包延长了闭包的生命周期 非逃逸闭包生命周...

网友评论

      本文标题:Swift 3.0 @escaping 逃逸闭包含义

      本文链接:https://www.haomeiwen.com/subject/brfiottx.html