Improved readability in `SDWebImageManager` by creating `safelyRemoveOperationFromRunning:` method

This commit is contained in:
Bogdan Poplauschi 2016-09-30 14:53:52 +03:00
parent fdb8b2c1c6
commit 265ace4a24
1 changed files with 15 additions and 23 deletions

View File

@ -145,10 +145,7 @@
operation.cacheOperation = [self.imageCache queryCacheOperationForKey:key done:^(UIImage *cachedImage, NSData *cachedData, SDImageCacheType cacheType) {
if (operation.isCancelled) {
@synchronized (self.runningOperations) {
[self.runningOperations removeObject:operation];
}
[self safelyRemoveOperationFromRunning:operation];
return;
}
@ -242,22 +239,13 @@
}
if (finished) {
@synchronized (self.runningOperations) {
if (strongOperation) {
[self.runningOperations removeObject:strongOperation];
}
}
[self safelyRemoveOperationFromRunning:strongOperation];
}
}];
operation.cancelBlock = ^{
[self.imageDownloader cancel:subOperation];
@synchronized (self.runningOperations) {
__strong __typeof(weakOperation) strongOperation = weakOperation;
if (strongOperation) {
[self.runningOperations removeObject:strongOperation];
}
}
__strong __typeof(weakOperation) strongOperation = weakOperation;
[self safelyRemoveOperationFromRunning:strongOperation];
};
} else if (cachedImage) {
dispatch_main_async_safe(^{
@ -266,9 +254,7 @@
completedBlock(cachedImage, cachedData, nil, cacheType, YES, url);
}
});
@synchronized (self.runningOperations) {
[self.runningOperations removeObject:operation];
}
[self safelyRemoveOperationFromRunning:operation];
} else {
// Image not in cache and download disallowed by delegate
dispatch_main_async_safe(^{
@ -277,9 +263,7 @@
completedBlock(nil, nil, nil, SDImageCacheTypeNone, YES, url);
}
});
@synchronized (self.runningOperations) {
[self.runningOperations removeObject:operation];
}
[self safelyRemoveOperationFromRunning:operation];
}
}];
@ -303,12 +287,20 @@
- (BOOL)isRunning {
BOOL isRunning = NO;
@synchronized(self.runningOperations) {
@synchronized (self.runningOperations) {
isRunning = (self.runningOperations.count > 0);
}
return isRunning;
}
- (void)safelyRemoveOperationFromRunning:(nullable SDWebImageCombinedOperation*)operation {
@synchronized (self.runningOperations) {
if (operation) {
[self.runningOperations removeObject:operation];
}
}
}
@end