Merge pull request #988 from wantedly/improve-operation-behavior
Improve operation behavior
This commit is contained in:
commit
beabb1842b
|
@ -10,9 +10,6 @@
|
|||
#import "SDWebImageDownloaderOperation.h"
|
||||
#import <ImageIO/ImageIO.h>
|
||||
|
||||
NSString *const SDWebImageDownloadStartNotification = @"SDWebImageDownloadStartNotification";
|
||||
NSString *const SDWebImageDownloadStopNotification = @"SDWebImageDownloadStopNotification";
|
||||
|
||||
static NSString *const kProgressCallbackKey = @"progress";
|
||||
static NSString *const kCompletedCallbackKey = @"completed";
|
||||
|
||||
|
|
|
@ -10,6 +10,11 @@
|
|||
#import "SDWebImageDownloader.h"
|
||||
#import "SDWebImageOperation.h"
|
||||
|
||||
extern NSString *const SDWebImageDownloadStartNotification;
|
||||
extern NSString *const SDWebImageDownloadReceiveResponseNotification;
|
||||
extern NSString *const SDWebImageDownloadStopNotification;
|
||||
extern NSString *const SDWebImageDownloadFinishNotification;
|
||||
|
||||
@interface SDWebImageDownloaderOperation : NSOperation <SDWebImageOperation>
|
||||
|
||||
/**
|
||||
|
@ -39,6 +44,16 @@
|
|||
*/
|
||||
@property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options;
|
||||
|
||||
/**
|
||||
* The expected size of data.
|
||||
*/
|
||||
@property (assign, nonatomic) NSInteger expectedSize;
|
||||
|
||||
/**
|
||||
* The response returned by the operation's connection.
|
||||
*/
|
||||
@property (strong, nonatomic) NSURLResponse *response;
|
||||
|
||||
/**
|
||||
* Initializes a `SDWebImageDownloaderOperation` object
|
||||
*
|
||||
|
|
|
@ -12,6 +12,11 @@
|
|||
#import <ImageIO/ImageIO.h>
|
||||
#import "SDWebImageManager.h"
|
||||
|
||||
NSString *const SDWebImageDownloadStartNotification = @"SDWebImageDownloadStartNotification";
|
||||
NSString *const SDWebImageDownloadReceiveResponseNotification = @"SDWebImageDownloadReceiveResponseNotification";
|
||||
NSString *const SDWebImageDownloadStopNotification = @"SDWebImageDownloadStopNotification";
|
||||
NSString *const SDWebImageDownloadFinishNotification = @"SDWebImageDownloadFinishNotification";
|
||||
|
||||
@interface SDWebImageDownloaderOperation () <NSURLConnectionDataDelegate>
|
||||
|
||||
@property (copy, nonatomic) SDWebImageDownloaderProgressBlock progressBlock;
|
||||
|
@ -20,7 +25,6 @@
|
|||
|
||||
@property (assign, nonatomic, getter = isExecuting) BOOL executing;
|
||||
@property (assign, nonatomic, getter = isFinished) BOOL finished;
|
||||
@property (assign, nonatomic) NSInteger expectedSize;
|
||||
@property (strong, nonatomic) NSMutableData *imageData;
|
||||
@property (strong, nonatomic) NSURLConnection *connection;
|
||||
@property (strong, atomic) NSThread *thread;
|
||||
|
@ -210,6 +214,10 @@
|
|||
}
|
||||
|
||||
self.imageData = [[NSMutableData alloc] initWithCapacity:expected];
|
||||
self.response = response;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadReceiveResponseNotification object:self];
|
||||
});
|
||||
}
|
||||
else {
|
||||
NSUInteger code = [((NSHTTPURLResponse *)response) statusCode];
|
||||
|
@ -222,7 +230,7 @@
|
|||
[self.connection cancel];
|
||||
}
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:self];
|
||||
});
|
||||
|
||||
if (self.completedBlock) {
|
||||
|
@ -352,7 +360,8 @@
|
|||
self.thread = nil;
|
||||
self.connection = nil;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadFinishNotification object:self];
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -393,7 +402,7 @@
|
|||
self.thread = nil;
|
||||
self.connection = nil;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:self];
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue