下面首先来看GCD的使用
下面首先来看GCD的使用:
1
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
async表明异步运行,block代表的是你要做的事情,queue则是你把任务交给谁来处理了.(除了async,还有sync,delay,本文以async为例).
之所以程序中会用到多线程是因为程序往往会需要读取数据,然后更新UI.为了良好的用户体验,读取数据的操作会倾向于在后台运行,这样以避免阻塞主线程.GCD里就有三种queue来处理。
1. Main queue:
顾名思义,运行在主线程,由dispatch_get_main_queue获得.和ui相关的就要使用Main Queue.
2.Serial quque(private dispatch queue)
每次运行一个任务,可以添加多个,执行次序FIFO. 通常是指程序员生成的,比如:
1
2
3
4
NSDate *da = [NSDate date];
NSString *daStr = [da description];
const char *queueName = [daStr UTF8String];
dispatch_queue_t myQueue = dispatch_queue_create(queueName, NULL);
3. Concurrent queue(global dispatch queue):
可以同时运行多个任务,每个任务的启动时间是按照加入queue的顺序,结束的顺序依赖各自的任务.使用dispatch_get_global_queue获得.
所以我们可以大致了解使用GCD的框架:
1
2
3
4
5
6
7
dispatch_async(getDataQueue,^{
//获取数据,获得一组后,刷新UI.
dispatch_aysnc (mainQueue, ^{
//UI的更新需在主线程中进行
};
}
)
由此可见,GCD的使用非常简单,以我的使用经验来看,以后会逐步淘汰使用NSOperation而改用GCD。
提个问题:如果某个ViewController里运行了一个Thread,Thread还没结束的时候,这个ViewController被Release了,结果会如何?
经过的的测试,Thread不结束,ViewController一直保留,不会执行dealloc方法。
下面首先来看GCD的使用相关推荐
- IOS 多线程的一些总结
IOS 多线程 有三种主要方法 (1)NSThread (2)NSOperation (3)GCD 下面简单介绍这三个方法 1.NSThread 调用方法如下: 如函数需要输入参数,可从object传 ...
- Chisel教程——07.详解ChiselTest
详解ChiselTest 动机 Chisel团队给测试框架做了很多工作,ChiselTest提供了以下改进: 既可以进行单元测试也可以进行系统集成测试: 为可组合的抽象和分层设计: 高度可用,通过让单 ...
- 【世界数学难题】素数判定与大数因子分解问题(下)
6.一种概率算法 缪内的结果虽然很好,但它毕竟是依赖于一个悬而未决的假设.因而在实用中,它是不能被采用的.故我们回到勒默的结果,看看从这个结果还能引伸出什么方法来. 勒默的结果说,若n是合数,则存在a ...
- 关于CGD的一些领悟
GCD相对来说是一种更优雅的方式,看如下代码: NSString* parameter = [self getSomeParameter]; dispatch_async(dispatch_get_g ...
- 基金投资从入门到精通
第一篇 基础知识篇 第一节 认识基金 基金投资入门系列--基础知识 1.什么是证券投资基金? 通俗地说,证券投资基金是通过汇集众多投资者的资金,交给银行保管,由专业的基金管理公司负责投资于股 ...
- [数论]Gcd/ExGcd欧几里得学习笔记
\(Q\):什么是\(GCD\)? \(GCD\) \(GCD\),即最大公约数(\(Greatest\ Common\ Divisor\)) 对于两个自然数\(a,b\),定义\(GCD(a,b)\ ...
- 深入理解GCD之dispatch_queue
原文链接深入理解GCD之dispatch_queue 前言 上一篇我们介绍了GCD的结构体,这一篇我们着重看一下GCD中队列的构成.队列是我们在使用GCD中经常接触的技术点. 关键点 主队列和主线程 ...
- GCD6: 在GCD上异步执行非UI相关任务
讨论:在主队列.串行队列和并发队列上异步执行代码块才能见识到 GCD 的真正实力. 要在分派队列上执行异步任务,你必须使用下面这些函数中的其中一个: dispatch_async为了异步执行向分派队列 ...
- 关于多线程之GCD的一些学习要点
GCD是当前多线程使用最方便的,也是使用比较多的. 学习GCD主要集中在一下几点: 一.队列,同步,异步 1.主队列:dispatch_get_main_queue(); 2.串行队列:dispatc ...
最新文章
- SQL Server各种日期计算方法
- Mac 安装多个版本jdk
- mysql ssl_cipher_mysql添加用户:出现Field 'ssl_cipher' doesn't have a defa
- 使用MySQL的LAST_INSERT_ID--转
- MySQL中如何通过修改表实现约束的添加与删除
- 工预-SQLite(weiwan)
- Redis:07---Redis数据结构
- java ee 容器_javaee中web的四大容器简介
- OpenShift Security 16 - 用 RHACS 为加固应用镜像安全提供线索
- mysql数据库学习——5,数据类型,字符集和校对
- python123.io能不能补交作业_作业分配问题-回溯法-Python3
- 解决UE4官方文档C++API查询慢问题
- 扫雷(简易版) 10*10
- 西门子伺服驱动器6SE70上电无显示故障分析
- 免费的NBA历史得分榜接口
- 泛函分析和他的基础概念
- Schnorr签名算法(初始化和签名)C语言实现
- Arduino + AD9851 DDS信号模块 频率控制字和相位控制字写入
- 证件识别技术,OCR扫描识别
- 智力题:最短时间过桥问题
热门文章
- 对于电单车同学们提出的改动建议
- 2021年春季学期-信号与系统-第四次作业参考答案-第五小题
- 基于STC8H1K28的BH60的角度读写模块
- php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法
- 计算机应用问题,计算机应用中存在的问题及解决
- GPIO代码使用流程(伪代码部分示例)
- gta线上服务器维护,gtaol线上云服务器
- top刷新间隔_每天一个linux命令:top命令
- android 获取活动栈,活动的生命周期系列(1)返回栈
- mysql 可重复读 快照_MYSQL可重复读及原理、快照读和当前读