iOS----線程之間的通信
阿新 • • 發佈:2017-06-15
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----線程之間的通信