Jelajahi Sumber

Merge pull request #3826 from hawk0620/opt/avoid_self_be_nil_in_block

Avoid self if be nil in block.
DreamPiggy 8 bulan lalu
induk
melakukan
8c4078165c

+ 6 - 0
SDWebImage/Core/SDAnimatedImageView.m

@@ -242,12 +242,18 @@
         @weakify(self);
         self.player.animationFrameHandler = ^(NSUInteger index, UIImage * frame) {
             @strongify(self);
+            if (!self) {
+                return;
+            }
             self.currentFrameIndex = index;
             self.currentFrame = frame;
             [self.imageViewLayer setNeedsDisplay];
         };
         self.player.animationLoopHandler = ^(NSUInteger loopCount) {
             @strongify(self);
+            if (!self) {
+                return;
+            }
             // Progressive image reach the current last frame index. Keep the state and pause animating. Wait for later restart
             if (self.isProgressive) {
                 NSUInteger lastFrameIndex = self.player.totalFrameCount - 1;

+ 15 - 0
SDWebImage/Core/SDImageCachesManager.m

@@ -444,6 +444,9 @@
     @weakify(self);
     [cache queryImageForKey:key options:options context:context cacheType:queryCacheType completion:^(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType) {
         @strongify(self);
+        if (!self) {
+            return;
+        }
         if (operation.isCancelled) {
             // Cancelled
             return;
@@ -479,6 +482,9 @@
     @weakify(self);
     [cache storeImage:image imageData:imageData forKey:key options:options context:context cacheType:cacheType completion:^{
         @strongify(self);
+        if (!self) {
+            return;
+        }
         // Next
         [self serialStoreImage:image imageData:imageData forKey:key options:options context:context cacheType:cacheType completion:completionBlock enumerator:enumerator];
     }];
@@ -497,6 +503,9 @@
     @weakify(self);
     [cache removeImageForKey:key cacheType:cacheType completion:^{
         @strongify(self);
+        if (!self) {
+            return;
+        }
         // Next
         [self serialRemoveImageForKey:key cacheType:cacheType completion:completionBlock enumerator:enumerator];
     }];
@@ -517,6 +526,9 @@
     @weakify(self);
     [cache containsImageForKey:key cacheType:cacheType completion:^(SDImageCacheType containsCacheType) {
         @strongify(self);
+        if (!self) {
+            return;
+        }
         if (operation.isCancelled) {
             // Cancelled
             return;
@@ -552,6 +564,9 @@
     @weakify(self);
     [cache clearWithCacheType:cacheType completion:^{
         @strongify(self);
+        if (!self) {
+            return;
+        }
         // Next
         [self serialClearWithCacheType:cacheType completion:completionBlock enumerator:enumerator];
     }];

+ 3 - 0
SDWebImage/Core/UIButton+WebCache.m

@@ -73,6 +73,9 @@
                              context:mutableContext
                        setImageBlock:^(UIImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                            @strongify(self);
+                           if (!self) {
+                               return;
+                           }
                            [self setImage:image forState:state];
                        }
                             progress:progressBlock

+ 3 - 0
SDWebImage/Core/UIImageView+HighlightedWebCache.m

@@ -60,6 +60,9 @@
                              context:mutableContext
                        setImageBlock:^(UIImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                            @strongify(self);
+                           if (!self) {
+                               return;
+                           }
                            self.highlightedImage = image;
                        }
                             progress:progressBlock