闭包的逃逸

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容