Merge pull request #22 from steipete/master
Fixes warnings, Improves UIImageView loading helper
This commit is contained in:
commit
8d9b7ace34
3 changed files with 40 additions and 30 deletions
|
|
@ -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 @@ static inline BOOL AFHTTPOperationStateTransitionIsValid(AFHTTPOperationState fr
|
|||
|
||||
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 @@ static NSThread *_networkRequestThread = nil;
|
|||
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 @@ static NSThread *_networkRequestThread = nil;
|
|||
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 @@ static NSThread *_networkRequestThread = nil;
|
|||
|
||||
}
|
||||
|
||||
- (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 @@ didReceiveResponse:(NSURLResponse *)response
|
|||
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];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -84,9 +84,12 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat
|
|||
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 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat
|
|||
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 (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;
|
||||
}
|
||||
|
||||
if (block) {
|
||||
block(image);
|
||||
}
|
||||
}];
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue