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;
}];
}];
}