//在viewDidLoad中实现
//尾随闭包
//如果函数最后一个参数是闭包,函数参数可以提前结束,最后一个参数直接使用 {} 包装闭包代码
loadData { (result) in
print("获取的数据: \(result)")
}
// //按照函数本身编写的结果
// loadData(completion: { (result) -> () in
// print(result)
// })
//尾随闭包
DispatchQueue.global().async {
//嵌套的 gcd Xcode 不会改成尾随闭包
DispatchQueue.main.async(execute: {
//可以将上面的 ' execute ' 和 ' ) '删了
/*
DispatchQueue.main.async({
}
*/
})
}
//========下面实现loadData方法
func loadData(completion:(result : [String] )->()) -> ( )
{
//将任务添加到队列,指令执行任务的函数
//以 同步 / 异步 的方式来执行
DispatchQueue.global().async {
print("耗时操作 \(Thread.current)") //输出结果 : 耗时操作 <NSThread: 0x60000007c840>{number = 3, name = (null)}
//休眠
Thread.sleep(forTimeInterval:1.0)
//获取结果
let json = ["国内" , "国际" , "科技"]
//主队列回调
DispatchQueue.main.async(execute: {
print("主线程更新 UI \(Thread.current)")
//回调 -> 执行 闭包(通过参数传递)
completion(result: json)
})
}
}
Swift3.0 中的GCD
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 尝试了下Swift3.0中GCD的延时函数,发现貌似与之前的有挺大的不同,折腾了好一会终于算是会用了一丢丢 swi...