AFNetwork,我有些困惑

Posted

技术标签:

【中文标题】AFNetwork,我有些困惑【英文标题】:AFNetwork , I have something confused 【发布时间】:2016-10-18 03:14:28 【问题描述】:
@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?例如?

【问题讨论】:

我需要你的帮助,非常感谢! 【参考方案1】:

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

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

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

【讨论】:

以上是关于AFNetwork,我有些困惑的主要内容,如果未能解决你的问题,请参考以下文章

AFNetwork、Magical Record和块内保存

Objective-C 如何使用 AFNetwork 上传字符串

我是不是需要将 Alamofire 请求打包成 AFNetwork 之类的东西?

Swift 的 AFNetwork [关闭]

如何使用 AFNetwork 的 AFHTTPRequestOperationManager 设置 HTTP 请求正文?

AFNetwork 作用和用法详解