2014-01-27 25 views
1

我是iOS编程新手。AFnetworking VS dispatch_aync()VS SDWebImage Framework

我有一个要求,我所要做的服务器调用多次给大JSON,然后解析和TableView/Collection/ViewControllers显示。

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

所以

Q1)对于表视图/网格视图我想用苹果表延迟加载样品+与的SDWebImage更换图标下载为纽带的几个问题,苹果样品中这里提到的图像下载和通过SDWebImage我可以按照我的要求配置cache

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

iOS lazy-loading of table images

Q2)对于服务器调用和JSON解析,我是否应该去使用dispatch_async,然后使用NSJSONSerialization分析JSON或者我应该去使用AFNetworking

使用AFNetworking LIB是缺点我只需要服务器调用和解析没有其他功能..因此,如果我要去这个库,这将增加1.4 MB的应用程序大小,因为我已经添加SDWebImage框架(> 3 MB)。

这是我发现很多谷歌搜索后。 请建议我是否缺少一些东西......以及其他我应该遵循的方法。

回答

0

AFNetworking更好,可以处理您的两个问题。您还可以将其用于解析以及图像下载。它可以缓存甚至永远不会一次又一次地去服务器,如果图像视图请求相同的图像。请使用AFNetworking中提供的UImageView类别。

编辑 缓存在Afnetworking中阅读帖子this submisison。 如果你不想使用AFNetworking的全部功能,只想下载数据,我建议你不要使用它,你可以用NSURSession这样做,不要在项目中添加依赖项。使用NSURLSession其强大可以为你做得更好。 YOu只需要一个NSJSONSerilization调用来解析数据到NSObject,那不是什么大不了的事情。

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

[task resume]; 
+0

非常感谢这个信息。但我有疑问,我们可以根据我们的要求在AFNetworking中配置Cache吗? –

+0

你有什么要求...你甚至可以扩展,将缓存移动到磁盘或任何你想做的更改... –

+0

https://github.com/AFNetworking/AFNetworking/pull/1136阅读这个链接,你会发现一些有趣的缓存讨论。 –