文档章节

iOS 线程间的通信

最牛逼的代码搬运工
 最牛逼的代码搬运工
发布于 2016/11/14 10:54
字数 319
阅读 134
收藏 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
BlackHat 2018 iOS越狱细节揭秘:危险的用户态只读内存

  议题概要   现代操作系统基本都已经在硬件级别(MMU)支持了用户态只读内存,只读内存映射在保证了跨进程间通信、用户态与内核间通信高效性的同时,也保证了其安全性。直到DirtyCOW漏洞...

FreeBuf
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
21分钟前
3
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
24分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
28分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
38分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部