这里的@noescape 和throws是什么用法呢
这里的@noescape 和throws是什么用法呢
这里的@noescape 和throws是什么用法呢
2016-02-26
throws -> 此func會有丟Exception 的狀況
參考:
Swift 迷 - Swift 2.0 异常处理
http://www.swiftmi.com/topic/313.html
@noescape -> 用在傳入func 的參數為closure,宣告他為一個"非逃逸閉包(no-escape closure)",指的是此closure只會在這個func的範圍內使用,此宣告會讓編譯器比較好管理closure的生命週期,例:
非逃逸閉包:
func print (@noescape desc: () -> String) {
print (\(desc())) // 拿了立馬用
}
逃逸閉包:
func savePrintElement(desc: () -> String) {
self.elements.insert(desc) // 先存之後用
}
參考:
标哥的技术博客 - 闭包
举报