1. 程式人生 > >iOS----線程之間的通信

iOS----線程之間的通信

port read color spa ring select mic let 之間

當線程的數量大於一個的時候,線程之間可能會產生通信,既一個線程產生的結果要被另一個線程用到。

比如常用的圖片的加載就是這個樣子。圖片的加載是在子線程進行的,當圖片加載完畢,就會回到主線程中刷新UI,展示圖片。

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event { [self performSelectorInBackground:@selector(download) withObject:nil]; } -(void)download { //1.根據URL下載圖片 //從網絡中下載圖片 NSURL *urlStr = [NSURL URLWithString:@"asdf"]; //把圖片轉換為二進制的數據 NSData *data = [NSData dataWithContentsOfURL:urlStr];
//把數據轉換成圖片 UIImage *image = [UIImage imageWithData:data]; //2.回到主線程中設置圖片 [self performSelectorOnMainThread:@selector(settingImage:) withObject:image waitUntilDone:NO];

    //第二種方式

      //  [self.imageView performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO];      

  //第三種方式 :圖片調用set方法,很好!!!

    // [self.iconView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
} 


//設置顯示圖片 -(void)settingImage:(UIImage *)image { self.iconView.image=image; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
@end

本文參考文頂頂的博客:

http://www.cnblogs.com/wendingding/p/3805884.html

iOS----線程之間的通信