Swift - 使用DispatchGroup处理多线程并发操作与简化代码

本文介绍了如何在Swift中使用DispatchGroup来简化多线程并发操作,特别是在处理网络请求和界面更新时。文章通过三个部分,包括创建DispatchGroup、与网络请求库的结合使用以及并发任务的处理,展示了DispatchGroup如何提高代码可读性和管理多任务结束后的UI刷新问题。
摘要由CSDN通过智能技术生成

使用场景

1、简化代码易读性,似的获取数据与界面刷新分离

2、处理多线程并发执行,处理多任务请求结束后的UI刷新问题

3、与网络请求第三方的混合使用

一、创建DispatchGroup与简单实用

创建队列组

lazy var gropQueue:DispatchGroup = {

        let grop:DispatchGroup = DispatchGroup.init()

        return grop

    }()

简单的模拟DispatchGroup与DispatchQueue使用

func textGroup() -> Void {
        let queue:DispatchQueue = DispatchQueue.init(label: "textQueue")
        // 队列queue加入队列组
        queue.async (group: self.gropQueue){
            /*任务一*/
        }
        self.gropQueue.notify(queue: DispatchQueue.main) {
            /*界面处理*/
        }
    }

模拟多任务并发处理

func textMoreQueue() -> Void {
        let queue1:DispatchQueue = DispatchQueue.init(label: "textQueue1")
        let queue2:DispatchQueue = DispatchQueue.init(label: "textQueue2")
        let queue3:DispatchQueue = DispatchQueue.init(label: "textQueue3")
        // 队列queue加入队列组
        queue1.async (group: self.gropQueue){
            /*任务1*/
        }
        queue2.async (group: self.gropQueue){
            /*任务2*/
        }
        queue3.async (group: self.gropQueue){
            /*任务3*/
        }
        
        /*三个异步任务完成后执行界面处理操作*/
        self.gropQueue.notify(queue: DispatchQueue.main) {
            /*界面处理*/
        }
    }

以上是通过创建异步线程进行任务处理操作,一款app中最重要的就是数据与界面!下面我们从简单到复杂去处理异步请求与界面刷新

二、网络请求第三方的混合使用

在异步线程中的回调方法中去刷新界面

/*获取推荐列表*/
    func getInfomation() -> Void {
        let requestUrl:String = "https://www.apiopen.top/novelApi"
        Alamofire.request(requestUrl, method: .get).responseJSON { (response) in
            if let json = response.result.value {
                let jsonDic:Dictionary<String,Any> = json as! Dictionary
                let array:Array<Any> = jsonDic["data"] as! Array
                self.allArray.append(array)
                /*处理界面数据刷新界面*/
            } else {
            }
        }
    }

上述代码是我们常见的异步请求与界面刷新的组合方式之一、其优点在于代码结果简单易读,缺陷是如果我们返回的数据含有多种数据结果,例如这个推荐列表放回的数据结果有四

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值