【问题标题】:AFnetworking Vs dispatch_aync() Vs SDWebImage FrameworkAFnetworking Vs dispatch_aync() Vs SDWebImage 框架
【发布时间】:2014-01-27 10:05:14
【问题描述】:

我是 iOS 编程新手。

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

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

所以

Q1)对于表格视图/网格视图中的图像下载,我正在考虑使用 Apple Table Lazy Loading Sample + 用 SDWebImage 替换图标下载器,如链接中提到的 Apple 示例中的几个问题和通过 SDWebImage我可以根据我的要求配置cache

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

iOS lazy-loading of table images

Q2) 对于服务器调用和JSON 解析,我是否应该使用dispatch_async 然后使用NSJSONSerialization 解析JSON 或者我应该使用AFNetworking 来解决这个问题

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

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

【问题讨论】:

    标签: ios afnetworking sdwebimage


    【解决方案1】:

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

    编辑 在 Afnetworking 中缓存阅读 this 提交的帖子。 如果您不想使用 AFNetworking 的全部功能而只想下载数据,我建议您不要使用它,您可以使用 NSURSession 完成所有操作,不要在项目中添加依赖项。使用NSURLSession 它的强大可以为您做得更好。您只需要一个NSJSONSerilization 调用即可将数据解析为NSObject,这没什么大不了的。

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

    【讨论】:

    • 非常感谢您提供此信息。但我怀疑我们能否按照我们的要求在 AFNetworking 中配置缓存?
    • 您有什么要求...您甚至可以扩展它,将缓存移动到磁盘或您想做的任何更改...
    • github.com/AFNetworking/AFNetworking/pull/1136阅读这个链接你会发现一些有趣的缓存讨论。
    • 感谢 C_X 的信息,但我决定通过关注此stackoverflow.com/questions/8703877/… 选择 SDWebImage。你能看看这个吗?谢谢
    • SDWebImage 也是非常好的 API,您将包含更多的依赖项.. 否则很好。现在,如果您没有使用完整的 AFNetworking 功能,为什么不开始使用 NSURLSession 下载 JSON 数据,这也是一种选择。
    猜你喜欢
    • 1970-01-01
    • 2021-10-14
    • 2014-04-17
    • 2016-01-04
    • 2015-05-17
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多