线程间通信

来源:互联网 发布:数据资产管理体系 编辑:程序博客网 时间:2024/06/05 05:19

1.performSelector

- (void)perform {  NSString *urlString =      @"http://pic13.nipic.com/20110415/1347158_132411659346_2.jpg";  //下载操作放到后台执行  [self performSelectorInBackground:@selector(loadImage:) withObject:urlString];}- (void)loadImage:(NSString *)urlString {  NSURL *url = [NSURL URLWithString:urlString];  NSData *data = [NSData dataWithContentsOfURL:url];  UIImage *image = [UIImage imageWithData:data];  //下载完毕,回到主线程刷新 UI  [self performSelectorOnMainThread:@selector(updataUI:)                         withObject:image                      waitUntilDone:YES];  //是否等待执行完毕  NSLog(@"loadOVer---%@", [NSThread currentThread]);}- (void)updataUI:(UIImage *)image {  self.iconView.image = image;}

2.GCD

- (void)gcd {  NSString *urlString =      @"http://pic13.nipic.com/20110415/1347158_132411659346_2.jpg";  __weak typeof(self) weakSelf = self;  dispatch_async(dispatch_get_global_queue(0, 0), ^{    NSURL *url = [NSURL URLWithString:urlString];    NSData *data = [NSData dataWithContentsOfURL:url];    UIImage *image = [UIImage imageWithData:data];    //回到主线程刷新 UI    dispatch_async(dispatch_get_main_queue(), ^{      weakSelf.iconView.image = image;    });  });}

3.NSOperation

- (void)operation {  NSString *urlString =      @"http://pic13.nipic.com/20110415/1347158_132411659346_2.jpg";  NSOperationQueue *queue = [[NSOperationQueue alloc] init];  __weak typeof(self) weakSelf = self;  [queue addOperationWithBlock:^{    NSLog(@"%@", [NSThread currentThread]);    NSURL *url = [NSURL URLWithString:urlString];    NSData *data = [NSData dataWithContentsOfURL:url];    UIImage *image = [UIImage imageWithData:data];    //回到主线程刷新 UI    [[NSOperationQueue mainQueue] addOperationWithBlock:^{        NSLog(@"%@", [NSThread currentThread]);      weakSelf.iconView.image = image;    }];  }];}
0 0
原创粉丝点击