// // ViewController.swift// 闭包 import UIKit 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") }) } } }