闭包简介
与OC中的Block类似,闭包
主要用于异步操作执行完成后的代码回调,网络访问结果以参数的形式传递给调用方
- 与OC中的 block 类似
- 也是一个预先定义好的
代码块
- 在需要的时候执行
- 可以作为函数的参数,也可以作为函数的返回值
- 包含
self
时也是需要注意循环引用的问题
定义闭包的几种形式
- 没有参数没有返回值
//定义
let cloures = {
print("闭包打印")
}
//执行
cloures()
- 有参数没有返回值
//格式 let 闭包名 = {(参数列表) in __闭包的执行代码__}
let cloures = {(num1 a:Int, num2 b:Int) in
let result = a + b
print("打印输出:\(result)")
}
cloures(num1: 10, num2:20)
- 有参数有返回值
//格式 let 闭包名 = {(参数列表) -> 返回值类型 in __闭包的执行代码__}
let cloures = {(num1 a: Int, num2 b: Int) -> Int in
let result = a + b
return result
}
let result = cloures(num1: 10, num2: 20)
闭包没有返回值的三种情况
- 闭包没有返回值的三种情况和函数的写法一样
// 啥都不写
let cloures1 = { (num1 a: Int, num2 b: Int) in
let result = a + b
print("打印输出:\(result)")
}
// -> ()
let cloures2 = { (num1 a: Int, num2 b: Int) -> () in
let result = a + b
print("打印输出:\(result)")
}
// -> Void
let cloures3 = { (num1 a: Int, num2 b: Int) -> Void in
let result = a + b
print("打印输出:\(result)")
}