文档章节

iOS 线程间的通信

最牛逼的代码搬运工
 最牛逼的代码搬运工
发布于 2016/11/14 10:54
字数 319
阅读 150
收藏 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
六安
程序员
私信 提问
ArcGIS for iOS 开发系列(1) – 基本概念

1.1 iOS简介 2006年苹果公司发布了智能手机iPhone,卓越的外形设计和新颖的触摸式交互,令其迅速风靡全球,随后发布的平板电脑iPad同样也取得了巨大成功,二者所搭载的都是iOS智能移动操作系...

长平狐
2012/11/28
867
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
11/15
0
0
Android Socket 与 IOS Socket

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

postdep
2014/11/01
0
0
求大神指点简历

简 历 个人信息 姓 名: xxx 性 别: 男 出生日期: 1990年1月7日 居住地址: 上海 工作年限: 二年 电子邮件: xxxx@163.com 手 机: 186xxxx6859 户 口: 身 高: 婚姻状况: 新疆 175cm ...

尐帥鱼
2013/06/14
802
11
kurento开发android视频客户端

最近在搞kurento,流媒体服务。现在基于kurento进行开发,实现ios,android,web视频通话。目前web版本,ios版本都已开发完成,正常使用。但是android版本遇到问题,基于 google最 新的webrtc ...

wangjie142
2016/08/19
751
1

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
28
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
35
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
40
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
53
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部