class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
/*
闭包 类似于 block
block是C语言的, 类似于匿名函数
闭包是定义函数的, Swift中函数就是一种特殊的闭包
闭包的使用和block一样, 用于保存一段代码, 用作回调, 用作执行耗时操作
闭包格式
{
(形参列表) -> 返回值类型
in
执行语句
}
*/
// loadData()
/*
//这个闭包无参数无返回值
loadData2 { () -> () in
print("执行回调")
}
*/
/*
闭包简写(三种写法):
1.如果没有参数, 没有返回值, in和in之前的东西可以省略
2.如果闭包是函数的最后一个参数, 可以写在()后面 -- 尾随闭包
3.如果只有一个闭包参数, 那么()也可以省略 -- 尾随闭包
*/
/*
loadData2 ({//将闭包通过函数实参传递给函数
print("执行回调")
})
*/
/*
loadData2(){//如果闭包是函数的最后一个参数, 可以写在()后面 -- 尾随闭包
print("执行回调")
}
*/
loadData2{//如果只有一个闭包参数, 那么()也可以省略 -- 尾随闭包
print("执行回调")
}
loadData3("lnj") { () -> () in
print("执行回调")
}
}
func loadData3(name: String, finished: () -> ()){
print("name = \(name)")
finished()
}
func loadData2(finished: () -> ()){
print("耗时操作")
// 回调
finished()
}
func loadData(){
dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
print(NSThread.currentThread())
print("耗时操作")
dispatch_async(dispatch_get_main_queue(), { () -> Void in
print(NSThread.currentThread())
print("回到主线程更新UI")
})
}
}
闭包的基本概念及闭包的三种写法
最新推荐文章于 2024-07-08 08:31:50 发布