zoukankan      html  css  js  c++  java
  • 线程间的通信

    #import "HMViewController.h"
    
    @interface HMViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    @end
    
    @implementation HMViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        [self performSelectorInBackground:@selector(download) withObject:nil];
    }
    
    /**
     *  下载图片
     */
    - (void)download
    {
        NSLog(@"download---%@", [NSThread currentThread]);
        // 1.图片地址
        NSString *urlStr = @"http://pic.nipic.com/2007-11-09/2007119122519868_2.jpg";
        NSURL *url = [NSURL URLWithString:urlStr];
        
        // 2.根据地址下载图片的二进制数据(这句代码最耗时)
        NSLog(@"---begin");
        NSData *data = [NSData dataWithContentsOfURL:url];
        NSLog(@"---end");
        
        // 3.设置图片
        UIImage *image = [UIImage imageWithData:data];
        
        // 4.回到主线程,刷新UI界面(为了线程安全)
        [self performSelectorOnMainThread:@selector(downloadFinished:) withObject:image waitUntilDone:NO];
    //    [self performSelector:@selector(downloadFinished:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES];
    //    [self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];
        
        NSLog(@"-----done----");
    }
    
    - (void)downloadFinished:(UIImage *)image
    {
        self.imageView.image = image;
        
        NSLog(@"downloadFinished---%@", [NSThread currentThread]);
    }
    
    @end
  • 相关阅读:
    Python基础之基本数据类型
    Python基础之变量
    mysql数据库
    进程与线程
    并发编程
    网络编程
    内置函数(魔法方法)
    组合,封装,访问限制机制,property装饰器
    面向对象之继承
    Web开发中最致命的8个小错误
  • 原文地址:https://www.cnblogs.com/ZMiOS/p/4924206.html
Copyright © 2011-2022 走看看