不转义关闭
在 Swift 1 和 2 中,默认情况下,闭包参数是转义的。如果你知道闭包不会转义函数体,则可以使用 @noescape 属性标记参数。
在 Swift 3 中,它是另一种方式:默认情况下,闭包参数是非转义的。如果你打算使它转义该函数,则必须使用 @escaping 属性对其进行标记。
class ClassOne {
// @noescape is applied here as default
func methodOne(completion: () -> Void) {
//
}
}
class ClassTwo {
let obj = ClassOne()
var greeting = "Hello, World!"
func methodTwo() {
obj.methodOne() {
// self.greeting is required
print(greeting)
}
}
}