//在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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 尝试了下Swift3.0中GCD的延时函数,发现貌似与之前的有挺大的不同,折腾了好一会终于算是会用了一丢丢 swi...
- 小学五年级的时候,班级里新转来一个女孩,她穿着朴素,人很清瘦,扎着马尾。脸很白,但是脸蛋上泛着红。老师安排她和我一...