异步下载图像

时间:2016-01-02 17:27:45

标签: ios objective-c asynchronous

我使用以下代码下载图片。有人可以确认图像是按照它们看起来的异步下载吗?通常情况下,他们会快速下载,但是当数据通过时,用户界面会偶尔冻结一分钟,所以有些东西会出现问题:

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

0 个答案:

没有答案