以下是使用Xcode 6.4针对iOS 8.4构建的工作代码。
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue(), completionHandler: { response, data, error in
if error != nil {
println("there be an error")
} else {
let image = UIImage(data:data)
self.webimage.image = image
}
})
如果我在Xcode自动完成方法签名的闭合部分时双击它,我最终会进入这个状态。
Xcode没有把 })
并在结尾处增加 -> Void in
.
这是Xcode 6.4中的一个错误,还是有两种不同的闭包语法?
什么时候我需要 completionHandler : { arg, arg arg in
与...相比 completionHandler : {(arg,arg,arg) -> Void in //code })
Xcode自动完成你的指令的方式是 "尾部闭合式"。
来自苹果文档。
如果你需要把一个闭包表达式作为函数的最终参数传递给函数,而这个闭包表达式又很长,那么把它写成尾部闭包会很有用。尾部闭包是指写在其支持的函数调用的括号之外(和之后)的闭包表达式。
如果你想了解更多关于尾部封闭的知识,请在这里向文档报告。https:/developer.apple.comlibraryiosdocumentationSwiftConceptualSwift_Programming_LanguageClosures.html。 (参见 "尾部封闭 "一节)