块内未调用NSLog



我的replaceObjectatIndex:withObject:没有被调用,当我把它放在一个块。我知道这一点,因为当我在外部块中NSLog时,值不会改变。为什么内部块中的方法没有被调用,而外部块中的方法却被调用?有什么区别?这是代码:

if (cell.selected) {
    [[SDImageCache sharedImageCache] queryDiskCacheForKey:imageID
                                                     done:^(UIImage *image, SDImageCacheType cacheType)
     {
         // image is not nil if image was found
         if (image == nil) {
             //image is not found
             [SDWebImageDownloader.sharedDownloader downloadImageWithURL:[NSURL URLWithString:link]
                                                                 options:0
                                                                progress:^(NSInteger receivedSize, NSInteger expectedSize)
              {
                  // progression tracking code
              }
                                                               completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished)
              {
                  if (image && finished)
                  {
                      // image is finished being downloaded
                      // resize image
                      UIImage *resizedImage = [self imageWithImage:image forRowAtIndexPath:indexPath];
                      // store resized image in cache
                      [[SDImageCache sharedImageCache] storeImage:resizedImage forKey:imageID];
                      //set image view to resized image
                      [textCell.testImage setImage:resizedImage];
                      [self.heightArray replaceObjectAtIndex:indexPath.row
                                                  withObject:[NSNumber numberWithFloat:image.size.height]];
                  }
                  //delete original sized image
                  image = nil;
              }];
         } else {
             //image is found
             [textCell.testImage setImage:image];
             NSLog(@"image found %@", [self.heightArray objectAtIndex:indexPath.row]);
         }
     }];
} else {
    //cell is not selected
    textCell.testImage.image = nil;
}

顺便说一下,setImage:方法工作得很好,但不是replaceObjectatIndex: withthobject:

我不知道你在做什么,但我在你的代码中发现了一个问题:你正在使用的图像,即使你将其设置为nil

更正:

//delete original sized image - 
//??image = nil;
[self.heightArray replaceObjectAtIndex:indexPath.row
                                              withObject:[NSNumber numberWithFloat:image.size.height]];
image = nil;

最新更新