以下两种从 URL 中获取 UIImage 的方法之间的主要区别是什么?我最近在我的应用程序中从方法 1切换到了方法 2,当我认为这两种方法在实践中几乎相同时,似乎体验到了速度的急剧提升。只是想弄清楚为什么我看到这样的速度增加。
方法一
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSData *imageData = [NSData dataWithContentsOfURL:self.imageURL];
dispatch_async(dispatch_get_main_queue(), ^{
self.image = [UIImage imageWithData:imageData];
});
});
方法二
- (void)fetchImage
{
NSURLRequest *request = [NSURLRequest requestWithURL:self.imageURL];
self.imageData = [[NSMutableData alloc] init];
self.imageURLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
if(connection == self.imageURLConnection)
{
[self.imageData appendData:data];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if(connection == self.imageURLConnection)
{
self.image = [UIImage imageWithData:self.imageData];
}
}