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
  • 相关阅读:
    基于Qt5的排序算法简单可视化
    中文简体数字转阿拉伯数字
    Visual Studio Emulator For Android无法装载APK
    使用iFrame动态加载Application Cache
    Docker入门第五章
    Docker入门第四章
    Docker入门第三章
    Docker入门第二章
    Docker入门第一章
    Java7新特性
  • 原文地址:https://www.cnblogs.com/ZMiOS/p/4924206.html
Copyright © 2011-2022 走看看