Ios 异步下载图像
我正在使用以下代码下载图像。是否有人可以确认图像正在异步下载,就像它们看起来一样?通常情况下,他们下载速度很快,但当数据通过时,用户界面会不时冻结一分钟,因此出现问题:Ios 异步下载图像,ios,objective-c,asynchronous,Ios,Objective C,Asynchronous,我正在使用以下代码下载图像。是否有人可以确认图像正在异步下载,就像它们看起来一样?通常情况下,他们下载速度很快,但当数据通过时,用户界面会不时冻结一分钟,因此出现问题: #define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) //1 NSString *picURL = [NSString stringWithFormat:@"http://~/pics/%@",picname];
#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) //1
NSString *picURL = [NSString stringWithFormat:@"http://~/pics/%@",picname];
NSURL *urlPicUrl = [NSURL URLWithString:picURL];
dispatch_async(kBgQueue, ^{
NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:picURL]];
if (imgData) {
UIImage *imageCache = [[UIImage alloc] init];
imageCache = [UIImage imageWithData:imgData];
if (imageCache) {
[self saveImage:imageCache asPicName:picname];
dispatch_async(dispatch_get_main_queue(), ^{
});
}
}
});
编辑:
下面是保存图像的代码
- (void)saveImage: (UIImage*)image asPicName: (NSString*)picname
{
if (image != nil)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithString: picname] ];
NSData* data = UIImagePNGRepresentation(image);
[data writeToFile:path atomically:YES];
}
}
可以发布“saveImage:”方法的代码吗?为什么要异步调用主队列?代码应该是dispatch\u sync(dispatch\u get\u main\u queue(),^{})@马克伯克为什么?OP在这方面所做的并没有错。当我登录imgData时,我看到冻结发生在下载过程中。除了您的问题之外,为每个图像获取(相同的)
文档
目录,而不是在viewDidLoad
中获取一次并将其保存到变量中,是浪费时间和资源的。