因为在开发过程中所有的耗时操作必须在主线程中执行,所以线程之间的通信很重要,以下是示例代码
#import "ViewController.h"
@interface ViewController ()
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
dispatch_queue_t queue=dispatch_queue_create("123", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
NSURL *url=[NSURL URLWithString:@"此处实际为需要下载的图片的链接地址,为了不用审核改成中文"];
NSData *data=[NSData dataWithContentsOfURL:url];
UIImage *image=[UIImage imageWithData:data];
NSLog(@"当前线程是%@",[NSThread currentThread]);
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image=image;
NSLog(@"当前线程是%@",[NSThread currentThread]);
});
});
}
@end
本文介绍了一个iOS应用中实现图片下载的例子,并展示了如何使用GCD进行线程间的通信,确保所有耗时操作不在主线程执行的同时又能正确更新UI。
469

被折叠的 条评论
为什么被折叠?



