Permalink
Browse files

Merge pull request #22 from steipete/master

Fixes warnings, Improves UIImageView loading helper
  • Loading branch information...
2 parents 714ccc1 + 1ec54e2 commit 8d9b7ace341bb4cc8357b08f8f560d9741cc2b13 @mattt mattt committed Sep 13, 2011
View
43 AFNetworking/AFHTTPRequestOperation.m
@@ -23,6 +23,8 @@
#import "AFHTTPRequestOperation.h"
#import "AFNetworkActivityIndicatorManager.h"
+#define AFHTTPMinContentLength 1024 * 1024 * 8
+
typedef enum {
AFHTTPOperationReadyState = 1,
AFHTTPOperationExecutingState = 2,
@@ -107,6 +109,14 @@ @implementation AFHTTPRequestOperation
static NSThread *_networkRequestThread = nil;
++ (void)networkRequestThreadEntryPoint:(id)object {
+ do {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ [[NSRunLoop currentRunLoop] run];
+ [pool drain];
+ } while (YES);
+}
+
+ (NSThread *)networkRequestThread {
static dispatch_once_t oncePredicate;
@@ -118,14 +128,6 @@ + (NSThread *)networkRequestThread {
return _networkRequestThread;
}
-+ (void)networkRequestThreadEntryPoint:(id)object {
- do {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [[NSRunLoop currentRunLoop] run];
- [pool drain];
- } while (YES);
-}
-
+ (id)operationWithRequest:(NSURLRequest *)urlRequest
completion:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error))completion
{
@@ -246,16 +248,6 @@ - (BOOL)isConcurrent {
return YES;
}
-- (void)start {
- if (self.isFinished) {
- return;
- }
-
- self.state = AFHTTPOperationExecutingState;
-
- [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:YES modes:[self.runLoopModes allObjects]];
-}
-
- (void)operationDidStart {
self.connection = [[[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO] autorelease];
@@ -269,6 +261,16 @@ - (void)operationDidStart {
}
+- (void)start {
+ if (self.isFinished) {
+ return;
+ }
+
+ self.state = AFHTTPOperationExecutingState;
+
+ [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:YES modes:[self.runLoopModes allObjects]];
+}
+
- (void)cancel {
self.isCancelled = YES;
@@ -297,7 +299,10 @@ - (void)connection:(NSURLConnection *)connection
if (self.outputStream) {
[self.outputStream open];
} else {
- NSUInteger contentLength = MIN(MAX(abs(response.expectedContentLength), 1024), 1024 * 1024 * 8);
+ NSUInteger contentLength = MAX(abs(response.expectedContentLength), 1024);
+ if (contentLength < AFHTTPMinContentLength) {
+ contentLength = AFHTTPMinContentLength;
+ }
self.dataAccumulator = [NSMutableData dataWithCapacity:contentLength];
}
}
View
2 AFNetworking/UIImageView+AFNetworking.h
@@ -39,6 +39,6 @@
placeholderImage:(UIImage *)placeholderImage
imageSize:(CGSize)imageSize
options:(AFImageRequestOptions)options
- block:(void (^)(UIImage *image))block;
+ block:(void (^)(UIImage *image, BOOL cacheUsed))block;
@end
View
25 AFNetworking/UIImageView+AFNetworking.m
@@ -84,9 +84,12 @@ - (void)setImageWithURL:(NSURL *)url
placeholderImage:(UIImage *)placeholderImage
imageSize:(CGSize)imageSize
options:(AFImageRequestOptions)options
- block:(void (^)(UIImage *image))block
+ block:(void (^)(UIImage *image, BOOL cacheUsed))block
{
if (!url) {
+ // stop loading image
+ [self.imageRequestOperation cancel];
+ self.imageRequestOperation = nil;
return;
}
@@ -99,20 +102,22 @@ - (void)setImageWithURL:(NSURL *)url
self.image = cachedImage;
if (block) {
- block(cachedImage);
+ block(cachedImage, YES);
}
} else {
self.image = placeholderImage;
self.imageRequestOperation = [AFImageRequestOperation operationWithRequest:request imageSize:imageSize options:options success:^(UIImage *image) {
- if ([[request URL] isEqual:[[self.imageRequestOperation request] URL]]) {
- self.image = image;
- } else {
- self.image = placeholderImage;
- }
-
- if (block) {
- block(image);
+ if (self.imageRequestOperation && ![self.imageRequestOperation isCancelled]) {
+ if (block) {
+ block(image, NO);
+ }
+
+ if ([[request URL] isEqual:[[self.imageRequestOperation request] URL]]) {
+ self.image = image;
+ } else {
+ self.image = placeholderImage;
+ }
}
}];

0 comments on commit 8d9b7ac

Please sign in to comment.