什么是Swift中的转义闭包的好例子?
发布时间:2020-12-14 05:02:22 所属栏目:百科 来源:网络整理
导读:我正在阅读 Swift编程语言手册,它提到了一个逃避关闭.关于转义闭包,我不知道它们的意思是“闭包作为参数传递给函数,但在函数返回后调用.”有人可以提供一个逃避闭包的例子吗? 解决方法 转义闭包的一个示例是某些异步任务中的完成处理程序,例如启动网络请求
我正在阅读
Swift编程语言手册,它提到了一个逃避关闭.关于转义闭包,我不知道它们的意思是“闭包作为参数传递给函数,但在函数返回后调用.”有人可以提供一个逃避闭包的例子吗?
解决方法
转义闭包的一个示例是某些异步任务中的完成处理程序,例如启动网络请求:
func performRequest(parameters: [String: String],completionHandler: (NSData?,NSError?) -> ()) { let request = NSMutableURLRequest(URL: url) request.HTTPMethod = "POST" request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters,options: []) request.setValue("application/json",forHTTPHeaderField: "Content-Type") let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data,response,error in completionHandler(data,error) } task.resume() } 这就是这样称呼的: performRequest(["foo" : "bar"]) { data,error in guard error == nil else { print(error) return } // now use data here } // Note: The `completionHandler` above runs asynchronously,so we // get here before the closure is called,so don't try to do anything // here with `data` or `error`. Any processing of those two variables // must be put _inside_ the closure above. 这个completionHandler闭包被认为是转义,因为NSURLSession方法dataTaskWithRequest是异步运行的(即它立即返回,并且在请求完成后稍后将调用它自己的闭包). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |