iOS线程中的那些词

同步,不具备开启线程的能力:dispatch_sync

异步,具备开启线程的能力:dispatch_async

并列队列:多个任务可以同时执行

串行队列:一个任务执行完后,再执行下一个任务

一个金典的列子:

#define ZHGlobalQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

#define ZHMainQueue dispatch_get_main_queue()

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

dispatch_async(ZHGlobalQueue, ^{

// 1.子线程

NSString* urlStr = @"";

NSURL *url = [NSURL URLWithString:urlStr];

NSData *data = [NSData dataWithContentsOfURL:url];

UIImage *image = [UIImage imageWithData:data];

// 2.回主线程设置图片

dispatch_async(ZHMainQueue, ^{

[self.imageView setImage:image];

});

});

}

时间: 2024-10-10 11:36:26

iOS线程中的那些词的相关文章

iosGCD线程中的通信

今天让我们来看一看ios线程中是怎么样通信的. #import "ViewController.h" @interface ViewController () { UIImageView *_image; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CGRect frame = [[UIScreen  mainScreen]bounds]; _image = [[UII

【iOS开发每日小笔记(九)】在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下.其实,90%的作用是帮助自己回顾.记忆.复习. 一直想写一篇关于runloop学习有所得的文章,总是没有很好的例子.正巧自己的上线App Store的小游戏<跑酷好基友>(https://itunes.apple.com/us/app/pao-k

ios开发中 线程、进程即多线程简单介绍

本文转自:原文http://www.cnblogs.com/wendingding/p/3805088.html 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线

[转载]iOS 开发中为什么更新UI都要放在主线程中?

原因有2个: 1.在子线程中是不能进行UI 更新的,而可以更新的结果只是一个幻像:因为子线程代码执行完毕了,又自动进入到了主线程,执行了子线程中的UI更新的函数栈,这中间的时间非常的短,就让大家误以为分线程可以更新UI.如果子线程一直在运行,则子线程中的UI更新的函数栈 主线程无法获知,即无法更新 2.只有极少数的UI能,因为开辟线程时会获取当前环境,如点击某个按钮,这个按钮响应的方法是开辟一个子线程,在子线程中对该按钮进行UI 更新是能及时的,如换标题,换背景图,但这没有任何意义 1.程序一开

ios 单一线程中使用nsoperation 会导致资源竞争吗?

今天在处理多线程突然想到一个问题,多核处理器会不会导致,单一线程中,由runloop分发的2个函数同时执行呢?进而同时修改同一个变量,产生bug? 我做了以下的测试: - (void)viewDidLoad { [super viewDidLoad]; [self performSelectorOnMainThread:@selector(test1) withObject:nil waitUntilDone:NO]; [self performSelectorOnMainThread:@sel

IOS开发,子线程中是不能更新UI的

今天发现一个奇怪问题,当用NSNotification,在回调函数里面对tableview进行reloadData时,并不能更新UI,而且还会导致以后都更新不了.后来查了一些资料才发现,postNotification之后调用回调函数,相当于开了一个子线程,而子线程中是不能更新UI的.所以要想在notification的回调里面更新UI,必须用 dispatch_async(dispath_get_main_queue(),^{ [tableview reloadData]; }];

iOS开发中多线程基础

耗时操作演练 代码演练 编写耗时方法 - (void)longOperation { for (int i = 0; i < 10000; ++i) { NSLog(@"%@ %d", [NSThread currentThread], i); } } 直接调用耗时方法 // 1> 直接调用耗时方法 [self longOperation]; 运行測试效果 在后台运行耗时方法 // 2> 在后台运行耗时方法 [self performSelectorInBackgro

ios线程总结(持续更新ing)

一.什么是线程: 1.1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 2.线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 3.1个线程中任务的执行是串行的,如果要在1各线程中执行多个任务,那么只能一个一个地按顺序执行这些任务,也就是说,在同一时间内,1个线程只能执行1个任务 二.什么是多线程 1.1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 例:进程 ——>车间  ,线程——>车间工人 2.多线程的原理:同时间,CPU只能处理1条线程

iOS开发中的压缩以及解压

事实上,在iOS开发中,压缩与解压,我都是采用第三方框架SSZipArchive实现的 gitHub地址:   https://github.com/ZipArchive/ZipArchive 上面有详细的使用方法 因为ZipArchive不支持ARC,所以如果你的工程开启了ARC,那么就需要对ZipArchive设置一下.在ZipArchive.mm编译选项中,增加-fno-objc-arc即可. 最后,需要为工程链接libz.dylib动态链接库. 使用示范(压缩): // 获得mainBu