//非逃逸闭包(指明闭包是在函数前执行,不能用于外部应用,另外声明了非逃逸闭包后,在闭包中不用添加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}