swift中的@noescape和@autoclosure

//非逃逸闭包(指明闭包是在函数前执行,不能用于外部应用,另外声明了非逃逸闭包后,在闭包中不用添加self(非逃逸不存在循环引用))

//非逃逸闭包

func aaa(@noescape clo: (Void->Void)) {

clo()

}

aaa {print("...")}

//逃逸闭包

var closure : (Void->Void)?

func bbb(clo: (Void->Void)) {

closure = clo

}

bbb {print("...")}

closure!()

//自动闭包(自动将表达式转化为闭包,只能用于无参 ()->T )

//自动非逃逸闭包

func ccc(@autoclosure clo: ()->Bool) {

if clo() {

print("...")

}

}

ccc(2>1)

func ccc2(clo: ()->Bool) {

if clo() {

print("...")

}

}

//ccc2(2>1)  ❌

ccc2 {2 > 1}

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

推荐阅读更多精彩内容