iOS 线程间的通信
iOS 线程间的通信
最牛逼的代码搬运工 发表于11个月前
iOS 线程间的通信
  • 发表于 11个月前
  • 阅读 84
  • 收藏 0
  • 点赞 0
  • 评论 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];
}

 

共有 人打赏支持
粉丝 6
博文 36
码字总数 22061
×
最牛逼的代码搬运工
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: