闭包的逃逸

在swift3.0以前,一个函数的参数的闭包的捕捉策略是escaping,如果是一个非逃逸闭包,需要显示的添加声明@noescape。
简单的声明就是,如果闭包是函数结束前被调用就是非逃逸的noescape,如果这个闭包实在函数执行完后才被调用,调用的地方超过了这个函数的范围就是逃逸的escaping
在swift3.0之后,所有闭包默认为非逃逸的,即不需要声明@noescape,如果是逃逸闭包则需要声明@escaping
例如:masonry的闭包是在函数执行完之前会被调用即非逃逸的闭包 @noescape(默认的、不用声明)
网络请求的闭包是在数据返回之后才会执行即是逃逸的闭包@escaping(需要声明)

参考:swift3.0必看:@noescape走了,@escaping来了(非)逃逸闭包

你可能感兴趣的:(闭包的逃逸)