AFnetworking Vs dispatch_aync()与SDWebImage Framework相同

时间:2014-01-27 10:05:14

标签: ios afnetworking sdwebimage

我是iOS编程的新手。

我有一个要求,我必须多次执行服务器调用,提供大型JSON,然后在TableView / Collection / View Controllers中进行解析和显示。

我必须在Collection Grid ViewUITableView内下载图片,从而在用户滚动时开始/取消下载图片。

所以

Q1)对于表格视图/网格视图中的图像下载我正在考虑使用Apple Table Lazy Loading Sample +将Icon Downloader替换为SDWebImage的那个,如此处所述,链接Apple样本中的几个问题并通过{ {1}}我可以根据我的要求配置SDWebImage

编辑:基本上我想有一个非常透明的方式从网址获取图片,所以首先在NSCache中查找它们,如果没有找到磁盘上的图像(或核心数据)l如果没有找到再次下载异步,然后再次保存在缓存中。我猜SDWebImage提供了这个但是对于AFNetworking我必须查看代码并修改它。

iOS lazy-loading of table images

Q2)对于服务器调用和cache解析,我是否应该使用JSON然后使用dispatch_async解析JSON或者我应该使用{{1}这个

使用NSJSONSerialization lib的缺点是我只需要服务器调用并且不需要解析任何其他功能..因此,如果我要使用此lib,这将使应用程序大小增加1.4 MB,因为我已经添加AFNetworking框架(> 3 MB)。

这是我在大量谷歌搜索后发现的。 请建议我是否遗漏了某些东西......以及我应该遵循的任何其他方法。

1 个答案:

答案 0 :(得分:0)

AFNetworking更好,可以解决您的两个问题。您还可以使用它进行解析以及图像下载。它甚至可以缓存,如果图像视图请求相同的图像,它将永远不会再次进入服务器。使用UImageView中提供的AFNetworking类别。

修改 在Afnetworking中缓存阅读this次级邮件中的帖子。 如果您不想使用AFNetworking的全部功能并且只想下载数据,我建议您不要使用它,您可以使用NSURSession执行此操作,不要在项目中添加依赖项。使用NSURLSession它的强大功能可以为您做得更好。您只需要一次NSJSONSerilization调用就可以将数据解析为NSObject,这没什么大不了的。

NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                         completionHandler:
     ^(NSData *data, NSURLResponse *response, NSError *error) {
         // ...
     }];

 [task resume];