Skip to content

Commit

Permalink
Merge pull request #13 from jaminguy/master
Browse files Browse the repository at this point in the history
Move image loading to a background and fix potential retain cycle bug
  • Loading branch information
jakemarsh committed Oct 14, 2012
2 parents 17248ba + c63e87e commit 9522274
Showing 1 changed file with 35 additions and 30 deletions.
65 changes: 35 additions & 30 deletions UIImageView+JMImageCache.m
Original file line number Diff line number Diff line change
Expand Up @@ -45,36 +45,41 @@ - (void) setImageWithURL:(NSURL *)url placeholder:(UIImage *)placeholderImage {
}
- (void) setImageWithURL:(NSURL *)url key:(NSString*)key placeholder:(UIImage *)placeholderImage {
self.jm_imageURL = url;

UIImage *i;

if (key) {
i = [[JMImageCache sharedCache] cachedImageForKey:key];
} else {
i = [[JMImageCache sharedCache] cachedImageForURL:url];
}

if(i) {
self.image = i;
self.jm_imageURL = nil;
} else {
self.image = placeholderImage;

__block UIImageView *safeSelf = self;

[[JMImageCache sharedCache] imageForURL:url key:key completionBlock:^(UIImage *image) {
if ([url isEqual:safeSelf.jm_imageURL]) {
dispatch_async(dispatch_get_main_queue(), ^{
if(image) {
safeSelf.image = image;
} else {
safeSelf.image = placeholderImage;
}
safeSelf.jm_imageURL = nil;
});
}
}];
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *i;

if (key) {
i = [[JMImageCache sharedCache] cachedImageForKey:key];
} else {
i = [[JMImageCache sharedCache] cachedImageForURL:url];
}

if(i) {
dispatch_async(dispatch_get_main_queue(), ^{
self.image = i;
self.jm_imageURL = nil;
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
self.image = placeholderImage;
});

__weak UIImageView *safeSelf = self;

[[JMImageCache sharedCache] imageForURL:url key:key completionBlock:^(UIImage *image) {
if ([url isEqual:safeSelf.jm_imageURL]) {
dispatch_async(dispatch_get_main_queue(), ^{
if(image) {
safeSelf.image = image;
} else {
safeSelf.image = placeholderImage;
}
safeSelf.jm_imageURL = nil;
});
}
}];
}
});
}

@end

0 comments on commit 9522274

Please sign in to comment.