setImageWithURL:key:placeholder:completionBlock: calls itself - EXC_BAD_ACCESS
afarber opened this issue · comments
There seems a bug in JMImageCache where setImageWithURL:key:placeholder:completionBlock: calls itself, exhausting the stack and resulting in app crash "Thread 1: EXC_BAD_ACCESS"
Please see the
http://stackoverflow.com/questions/21063896/jmimagecache-in-a-simple-test-app-crashes-with-exc-bad-access/21064304
for a short app to reproduce it:
#import "ViewController.h"
#import "JMImageCache.h"
static NSString* const kAvatar = @"http://gravatar.com/avatar/55b3816622d935e50098bb44c17663bc.png";
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[_imageView setImageWithURL:[NSURL URLWithString:kAvatar]
placeholder:[UIImage imageNamed:@"male.png"]];
}
@end
it also happens to me also...
It happens for me as well, so I've found a workaround:
NSURL *videoImageURL = [NSURL URLWithString:imageURLString];
if ([[JMImageCache sharedCache] cachedImageForURL:videoImageURL])
{
//Put the correct image in the first instance itself
cell.thumbnailImage.image = [[JMImageCache sharedCache] cachedImageForURL:videoImageURL];
}
else
{
//Put the placeholder image and then invoke download of image
cell.thumbnailImage.image = [UIImage imageNamed:@"nectar_points_background_NEW"];
[[JMImageCache sharedCache] imageForURL:videoImageURL completionBlock:^(UIImage *downloadedImage) {
cell.thumbnailImage.image = downloadedImage;
}];
}