iOS开发技术分享

ios GCD概述

2016-07-19  本文已影响43人  Dayu大鱼

GCD

容易混淆的术语

同步和异步: 决定要不要开启新的线程

- 同步: 在当前线程中执行任务,不具备开启新线程的能力

- 异步: 在新的线程中执行任务,具备开启新线程能力

并发与串行 决定了任务的执行方式

- 并发:多个任务可以同时执行
- 串行: 一个任务结束后才可以进行下一个任务

无论是同步或者异步 只要是在串行队列中的任务 ,就必须等待上一个任务完成之后才可以执行

- 串行队列
    - 使用dispatch_queue_create 函数创建串行队列
    - dispatch_queue_create(const char*label , dispatch_queue_attr_t,attr);
        - 参数1: label:队列名称
        -参数2:attr:队列的属性 dispatch_queue_serial 


- 并发队列
    - 先进先出的方法,并发调度队列中的任务执行,再调度后续任务
    - 当前调度如果是同步执行的,会等待任务执行完毕后再调度后续的
    - 如果调度室异步执行的,同时底层线程池有可用的线程资源,会再新的线程调度后续任务的执行

主要是记得 同步和异步的区别,即使是并行或者串行 但是如果不是异步或者同步也满足条件 是不能根据两项中的一个来确定任务的调度和执行的方式的

同步任务和异步任务的使用:

登录qq之后刷新联系人头像和个性签名等信息

GCD默认的提供全局并发队列(建议使用这个)

延时执行

ios常见的延时执行方式:2种

1.调用NSObject

[self performSelector:@selector(run) withObject:nil afterDelay:2.0];
//2秒后再调用self的run方法

2.使用GCD函数

dispatch_after(dispatch_time (DISPATCH_TIME_NOW ,(int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 2秒后异步执行这里的代码... 
});

单利模式

上一篇 下一篇

猜你喜欢

热点阅读