在swift3.0以前,一个函数的参数的闭包的捕捉策略是escaping,如果是一个非逃逸闭包,需要显示的添加声明@noescape。
简单的声明就是,如果闭包是函数结束前被调用就是非逃逸的noescape,如果这个闭包实在函数执行完后才被调用,调用的地方超过了这个函数的范围就是逃逸的escaping
在swift3.0之后,所有闭包默认为非逃逸的,即不需要声明@noescape,如果是逃逸闭包则需要声明@escaping
例如:masonry的闭包是在函数执行完之前会被调用即非逃逸的闭包 @noescape(默认的、不用声明)
网络请求的闭包是在数据返回之后才会执行即是逃逸的闭包@escaping(需要声明)
闭包的逃逸
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
- 原文: Optional Non-Escaping Closures作者: Ole Begemann译者: kem...
- 前言 很多刚开始写Swift的同学或许已经把闭包应用在很多地方了,也总是会把闭包跟OC中的block划等号,的确S...