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}

你可能感兴趣的:(swift中的@noescape和@autoclosure)