闭包Closure是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C和Objective-C中的代码块以及其他编程语言如C++中的lambdas函数比较相似。
闭包可以捕获和存储其所在上下文中任意常量和变量的引用,这就是所谓的闭合并包裹着这些常量和变量,俗称闭包。Swift会管理在捕获过程中涉及到的所有内存操作。
1.闭包表达式语法有如下的一般的形式:
{ (parameters) -> returnType in
statements
}
闭包表达式:
2.根据上下文推断参数类型
reversed=sorted(names,{s1,s2 in return s1>s2})
实际上任何情况下,通过内联闭包表达式构造的闭包作为参数传递给函数时,都可以推断出闭包的参数和返回值类型,这意味着几乎不需要利用完整格式构造任何内联闭包。
3.尾部闭包
如果需要将一个很长的闭包表达式作为最后一个参数传递给函数的话,我们可以使用尾部闭包来增强函数的可读性。尾部闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。
let manager=AFHTTPRequestOperationManager(baseURL:nil)
manager.responseSerializer=AFHTTPResponseSerializer()
manager.GET(urlpath,parameters:nil,success:{
(request:AFHTTPRequestOperation!,obj:AnyObject!) -> Void in
print("ok")
})
{
(request:AFHTTPRequestOperation!,error:NSError!) ->Void in
print("error")
}