From 76d9b2bfc8ca7bdde7bbd1dc79d4577817ad3320 Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Thu, 15 Sep 2011 14:29:29 -0500 Subject: [PATCH] Adding -cancelImageRequestOperation to UIImageView category Improving performance of UIImageView -setImageWithURL:... by cancelling running operation if new image url request is different than passed url request --- AFNetworking/UIImageView+AFNetworking.h | 2 ++ AFNetworking/UIImageView+AFNetworking.m | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/AFNetworking/UIImageView+AFNetworking.h b/AFNetworking/UIImageView+AFNetworking.h index 72a19ec..b6deef6 100644 --- a/AFNetworking/UIImageView+AFNetworking.h +++ b/AFNetworking/UIImageView+AFNetworking.h @@ -41,4 +41,6 @@ options:(AFImageRequestOptions)options block:(void (^)(UIImage *image, BOOL cacheUsed))block; +- (void)cancelImageRequestOperation; + @end diff --git a/AFNetworking/UIImageView+AFNetworking.m b/AFNetworking/UIImageView+AFNetworking.m index ebd483b..62ea896 100644 --- a/AFNetworking/UIImageView+AFNetworking.m +++ b/AFNetworking/UIImageView+AFNetworking.m @@ -27,7 +27,7 @@ #import "AFImageCache.h" -static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperation"; +static NSString * const kUIImageViewImageRequestObjectKey = @"_af_imageRequestOperation"; @interface UIImageView (_AFNetworking) @property (readwrite, nonatomic, retain) AFImageRequestOperation *imageRequestOperation; @@ -86,11 +86,10 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat options:(AFImageRequestOptions)options block:(void (^)(UIImage *image, BOOL cacheUsed))block { - if (!url) { - // stop loading image - [self.imageRequestOperation cancel]; - self.imageRequestOperation = nil; + if (!url || [url isEqual:self.imageRequestOperation.request.URL]) { return; + } else { + [self cancelImageRequestOperation]; } NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; @@ -125,4 +124,8 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat } } +- (void)cancelImageRequestOperation { + [self.imageRequestOperation cancel]; +} + @end