iOS多线程(GCD)(swift)

本文详细介绍了在iOS开发中使用GCD进行多线程编程的方法,包括创建队列、自定义队列、延迟执行、多次执行、调度组及队列的暂停与恢复等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现iOS多线程主要有三种方式

一、GCD

他是苹果设计的在底层管理线程的方法

GCD最主要的概念就是队列,可分为两种类型,一为串行队列,二为并行队列,开发时用到的有三种队列:主队列、全局队列、自定义队列

1、创建gcd队列

   let myQueue:dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

第一个参数是优先级

        //用异步方式执行队列里的方法

dispatch_async(myQueue, { () -> Void in

            //任务

        })

2、自定义队列

let myqueue2:dispatch_queue_t = dispatch_queue_create("xindong.com", DISPATCH_QUEUE_CONCURRENT)

最后一个参数指的是并行的队列,还有一个是DISPATCH_QUEUE_SERIAL(串行)

        3、延迟执行

        let myTime:dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, (Int64)(NSEC_PER_SEC*2))//后面那个参数代表两秒,苹果公司建议这样写,这是转化为gcd能读懂的时间

        dispatch_after(myTime, dispatch_get_main_queue(), { () -> Void in

            //任务

        })//苹果公司建议用主队列

    4、多次执行

        dispatch_apply(3, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { (UInt index) -> Void in

            //任务

        }//执行3次,一般放在并行队列中

他是一个同步操作会阻塞主线程,所以一般放在异步执行的代码里

5、调度组

        let mygroup = dispatch_group_create()//创建调度组

        dispatch_group_async(mygroup, myQueue) { () -> Void in//异步执行调度组里面的内容

            //加载图片数据

            dispatch_async(dispatch_get_main_queue(), { () -> Void in

                //主线程更新ui

            })

        }

        dispatch_group_notify(mygroup, dispatch_get_main_queue()) { () -> Void in

            //这个方法在调度组里面的内容全部执行完毕后调用

        }

dispatch_group_wait(mygroup, DISPATCH_TIME_FOREVER)//一直等到调度组执行完,在执行下面的,这是一个同步操作,会阻塞主线程

   6、暂停队列

        dispatch_suspend(myQueue)//不能暂停主队列和系统队列

        7、恢复队列

        dispatch_resume(myQueue)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值