1.创建定时源:
/*1.间隔时间;2.对象;3.方法;4.自定义参数;5.是否重复*/
2.把定时源加入到当前线程的消息循环中
/*1.定时源;2.模式(1)NSDefaultRunLoopMode:拖动界面timer不运行(2)NSRunLoopCommonModes:拖动界面 TImer不受影响 */
[NSRunLoop currentRunLoop]addTimer
3.消息循环
(1)创建消息
(2)把消息放入循环,并指定消息的运行模式
(3)
4.子线程的消息循环
(1)创建子线程(2)往子线程的消息循环添加输入源(3)开启子线程的消息循环 <1> run开启之后关不了
<2>runUntilDate 指定时间间隔<3>apple推荐:通过全局布尔变量控制
特点:子线程默认不开启消息循环,主线程默认开启循环
5.GCD:Grand Central Dispatch 纯C语言 使用简单不管生命周期
定制任务:确定想做的事情
将任务添加到队列中:指定运行方式
GCD会自动将队列中的任务取出
任务的取出遵循队列的FIFO原则:先进先出,后进后出
6. (1)指定要干什么 block任务 dispatch_block_t 没有返回值 没有参数
(2)队列 dispatch_queue_t
(3)把任务加入到队列中dispatch_async(队列,任务)
简化写法:合起来
7.GCD线程通信:
(1)//闭包:能够调用其他方法内部的变量
(2)任务的执行方式:
//并发队列:可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)
//串行队列:让任务一个接着一个的执行(一个任务执行完毕后再执行下一个任务)
//主队列:特殊的串行队列,代表主线程 永远在主线程执行 等主线程不忙时 才调度任务去主线程运行
(3)要不要开启新的线程
//同步执行(synchroniz):在当前线程中执行,不具备开启新线程的能力
// 异步执行(Asynchronize):在新的线程中执行任务
8.串行队列同步:在当前线程有序运行
串行队列异步:开启一个新的线程 有序执行
并发队列异步:开启多个新线程 任务无序执行(效率最大)
并发队列同步:没有开启新的线程 有序执行
主队列异步:永远在主线程 不开新的线程 有序执行
主队列同步:运行不了--死锁:主线程任务执行完,主队列才会调度主线程去执行block任务
9.延迟执行:dispatch_after 精度高 纳秒
10.队列组: 等待组里面的异步任务全部执行完成再去执行其他任务
11.一次性执行:dispatch_once 用在单例模式
12.单例模式:整个app中只有一个类的实例化对象
Emily.Wang