不轉義關閉
在 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)
}
}
}