AFNetwork ,我有些困惑
AFNetwork , I have something confused
@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,什么时候可以是 YES?例如?
isActiveTaskURLEqualToURLRequest:
方法的实现检查是否已经有活动任务从同一个 URL 下载图像。它 returns TRUE
当在图像下载任务完成之前使用相同的 urlRequest
参数调用该方法时。检查是为了防止为相同的 UIImageView 下载重复图像。
例如,如果您在同一代码块中使用相同的 NSURL请求参数连续调用此方法两次,则第一次进行检查时,if
将评估为 FALSE
因为它没有活动任务(将创建并执行一个)。第二次检查时,if
的计算结果为 TRUE
,因为已经有一个正在下载图像的活动任务。
要亲自查看,请复制此调用,然后将其粘贴为下一个语句。在第二次(重复)调用上设置断点并单步执行。
@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,什么时候可以是 YES?例如?
isActiveTaskURLEqualToURLRequest:
方法的实现检查是否已经有活动任务从同一个 URL 下载图像。它 returns TRUE
当在图像下载任务完成之前使用相同的 urlRequest
参数调用该方法时。检查是为了防止为相同的 UIImageView 下载重复图像。
例如,如果您在同一代码块中使用相同的 NSURL请求参数连续调用此方法两次,则第一次进行检查时,if
将评估为 FALSE
因为它没有活动任务(将创建并执行一个)。第二次检查时,if
的计算结果为 TRUE
,因为已经有一个正在下载图像的活动任务。
要亲自查看,请复制此调用,然后将其粘贴为下一个语句。在第二次(重复)调用上设置断点并单步执行。