首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

技巧理解GCD(1)

技巧理解GCD(1)

之前对GCD的理解很浅,就是那种看了一会能勉强理解,可是过一段时间又给忘记了,又得回头来看。这次下定决心一定要把GCD给吃透了。网上也有很多不错关于GCD的文章帮助了我的理解。

    很多情况下,我们使用GCD的情况基本是以下几种:

        异步获取网络数据,在主线程中刷新UI

        override func viewDidLoad() {
            super.viewDidLoad()
            loadData { (result) in
                // 获取到数据赋值
                self.dataArr = result
                //刷新tableView列表
                self.tableView.reloadData()
            }
            setupUI()  
        }
        
        func loadData(completionescaping (_ result[String]))->()){
            DispatchQueue.global().async {
                print("模拟网络延迟")
                Thread.sleep(forTimeInterval: 3.0)
                let arr = ["😝","🤣","🙄","🌹","💰","😪","😴"]
                DispatchQueue.main.async {
                    print("回到主线程,更新UI")
                    completion(arr)
                }
            }
        }

        定时操作

    func timer() {
            print("开始")
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2.0) {
                print("结束")
            }
        }

        设计单例

    static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
返回列表