AFNetwork,我有些困惑

时间:2016-10-18 03:14:28

标签: uiimageview afnetworking

@implementation UIImageView (AFNetworking)

有一个方法

- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
              placeholderImage:(UIImage *)placeholderImage
                       success:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *image))success
                       failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure

在此方法的实现中,将活动请求URL与urlRequest参数进行比较:

if ([self isActiveTaskURLEqualToURLRequest:urlRequest]){
    return;
}

这条件何时成立?

我想了很多时间,但不知道,它是如何运作的? 大多数时候总是NO,什么时候可以?例如?

1 个答案:

答案 0 :(得分:0)

isActiveTaskURLEqualToURLRequest:方法的实现检查是否已存在从同一URL下载图像的活动任务。在图像下载任务完成之前,使用相同的TRUE参数调用方法时,它返回urlRequest。检查是为了防止同一UIImageView的重复图像下载。

例如,如果您在具有相同NSURLRequest参数的相同代码块中连续两次调用此方法,则第一次进行检查时,if将评估为FALSE,因为它没有活动任务(一个将被创建并执行)。第二次检查时,if将评估为TRUE,因为已经有一个活动任务下载图像。

要自己查看,请复制此调用,然后将其粘贴为下一个语句。在第二个(重复)调用上设置断点并逐步执行。