文档章节

iOS 线程间的通信

最牛逼的代码搬运工
 最牛逼的代码搬运工
发布于 2016/11/14 10:54
字数 319
阅读 144
收藏 0

iOS开发--线程间的通信主要分为两大类:

1.线程之间进行传值。

2.一个线程完成之后,转到另一个线程中继续执行。

直接上代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
//    [self test1];
//    [self test2];
    [self setUpUI];
    [self correspond];
}

/******线程间的通信*******/
/******在一个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信。*******/
/******线程间的通信主要体现在下面两个方面。*******/
/******1. 一个线程传递数据给另一个线程。*******/
/******2. 在一个线程中执行完特定任务后,转到另一个线程继续执行任务。*******/

-(void)setUpUI{
    UIImageView *iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, kScreenWidth, 100)];
    iconView.backgroundColor = [UIColor clearColor];
    [self.view addSubview:iconView];
    self.iconView = iconView;
}

/******运用NSThread来展现*******/
-(void)correspond
{
    /******在自线程中调用download方法下载图片*******/
    [self performSelectorInBackground:@selector(download) withObject:nil];
}

-(void)download{
    NSURL *url = [NSURL URLWithString:@"http://www.yoka.com/dna/pics/ba15ad3a/d3571b5e5e9ba95ea11.jpg"];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *icon = [UIImage imageWithData:data];
    
    /******NSThread版本*******/
    /******一个线程传递数据给另一个线程*******/
//    [self.iconView performSelectorOnMainThread:@selector(setImage:) withObject:icon waitUntilDone:NO];
    
    /******在一个线程中执行完特定任务后,转到另一个线程继续执行任务*******/
//    [self performSelectorOnMainThread:@selector(settingImage:) withObject:icon waitUntilDone:NO];
    
    /******dispatch版本*******/
    dispatch_async(dispatch_get_main_queue(), ^{
        [self settingImage:icon];
    });
}

-(void)settingImage:(UIImage *)image
{
    [self.iconView setImage:image];
}

 

© 著作权归作者所有

共有 人打赏支持
最牛逼的代码搬运工
粉丝 5
博文 42
码字总数 23329
作品 0
六安
程序员
iOS按钮倒计时在进入后台不继续计时的处理

iOS程序进入后台后十分钟之内就会被系统kill掉,我想要程序进入后台后仍然运行计时功能,怎么解决呢? 方法一:可以使用记录开始时间和获取当前时间的时间差进行处理 还是直接上代码: 下面的...

云上飞飞
07/06
0
0
Android Socket 与 IOS Socket

最近做了一个项目,支持Android和ios两个平台。 这个项目中会用到一些简单的Socket通信,所以就有机会接触到了Android和ios两个平台的Socket实现。 现在将android和ios的Socekt做一些总结: ...

postdep
2014/11/01
0
0
IOS NSNotification 通知

一. 先看下官方对NSNotification通知的解释 1. NSNotification 通知  @interface NSNotification : NSObject   接口通知,继承NSObject,实现NSCopying,NSCoding协议  A container for...

冬季的暖风
08/02
0
0
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
05/26
0
0
关于iOS多线程,这边勉强可以看看(OC&Swift)

iOS开发多线程总是绕不过的坎,看了很多前辈们优秀的文章,如:关于iOS多线程,我说,你听,没准你就懂了!、谈iOS多线程(NSThread、NSOperation、GCD)编程、iOS多线程:『GCD』详尽总结、i...

Andy_Ron
08/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用责任链模式设计一个拦截器

前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其...

编程SHA
7分钟前
0
0
IDE,SATA,SCSI,SAS,FC,SSD说明与区别

DE是俗称的并口,SATA是俗称的串口,这两种硬盘是个人电脑和低端服务器常见的硬盘。SCSI是”小型计算机系统专用接口”的简称,SCSI硬盘就是采用这种接口的硬盘。SAS就是串口的SCSI接口。一般...

mskk
10分钟前
0
0
MySQL面试题集锦

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正...

老道士
45分钟前
0
0
使用 LogStash 归集日志

elastic 官网: https://www.elastic.co/ 为了便于集中查看多台主机的业务日志,使用 Filebeat, Redis, Logstash的方式进行收集: (1) Filebeat 监控日志文件的变化, 将新增部分写入redis中, 每...

ouhoo
48分钟前
0
0
java序列化(六) - protostuff序列化

添加依赖 <dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.5.9</version> </de......

晨猫
55分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部