From 2b0bb248f433617a158ebf92e80a284076ceeeba Mon Sep 17 00:00:00 2001 From: nonamelive Date: Wed, 28 Sep 2011 14:29:51 +0800 Subject: [PATCH] Fixed a potential crash when the delegate retainCount = 1, which means the delegate is only retained by the SDWebImageManager and the delegate's dealloc method has a structure like the code below. - (void)dealloc { [manager cancelForDelegate:self]; [super dealloc]; } --- SDWebImageManager.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDWebImageManager.m b/SDWebImageManager.m index 9c6ddbc..32ccd3d 100644 --- a/SDWebImageManager.m +++ b/SDWebImageManager.m @@ -175,7 +175,7 @@ static SDWebImageManager *instance; SDWebImageDownloader *aDownloader = [downloaders objectAtIndex:uidx]; if (aDownloader == downloader) { - id delegate = [downloadDelegates objectAtIndex:uidx]; + id delegate = [[[downloadDelegates objectAtIndex:uidx] retain] autorelease]; if (image) { @@ -228,7 +228,7 @@ static SDWebImageManager *instance; SDWebImageDownloader *aDownloader = [downloaders objectAtIndex:uidx]; if (aDownloader == downloader) { - id delegate = [downloadDelegates objectAtIndex:uidx]; + id delegate = [[[downloadDelegates objectAtIndex:uidx] retain] autorelease]; if ([delegate respondsToSelector:@selector(webImageManager:didFailWithError:)]) {