iphone - 在 iPhone 中延迟加载图像的最佳方法是什么?

标签 iphone uitableview lazy-loading

我想知道,延迟加载的最佳方法是什么。对我来说,大多数应用程序都使用了解析并从服务器获取 url 并将图像放入 TableView 中。所以我实现了延迟加载来提高应用程序的性能。现在我想知道延迟加载图像的最佳方法。因为我已经使用了懒加载的四种方式了,

  • 从 Apple Developer.com 延迟加载图像

  • 实现了异步方法来改进延迟加载

  • 使用单独的主线程来处理下载的图像。

  • 已使用 ECOImageLoadingDemo 应用程序进行延迟加载。

但是我已经使用了以上四种方法来实现延迟加载。但我想知道延迟加载的最佳方法是什么。哪一种在性能方面和内存方面最适合?

提前致谢。

问候,

普加尔

最佳答案

根据我的经验,性能方面和内存方面的解决方案位于 slider 的两端。您可以在这两者之间移动您的解决方案,但缺点是拥有性能最佳的解决方案通常意味着内存方面更差的解决方案,反之亦然。我希望我解释得足够清楚:)

以下是我处理延迟加载图像问题的方法:

在我的应用程序中,我创建了一个实体,我将其称为GlobalImageProvider。所有对图像的请求都通过该实体。这样我就可以控制用于下载的线程数量,并且可以实现缓存系统(内存+本地磁盘),所有这些对应用程序完全透明并具有完全控制权。 通过控制缓存的大小,我可以控制应用程序的速度。就性能而言,没有什么比在内存中创建 UIImage 更好的了。 在内存方面,您甚至可以选择禁用缓存。

更重要的是,我什至可以在应用程序运行时根据我所拥有的网络质量动态更改线程数。

为了发出在线请求,我正在使用 NSURLConnection,但我计划切换到其他东西,因为我了解到它会泄漏内存。

<小时/>

在 View 和 Controller 方面,我有一个 AsyncImageView,它只是一个知道如何与 GlobalImageProvider 一起使用的 UIImageView。它知道在加载时显示事件指示器,并可以处理来自 GlobalImageProvider 的响应。
如果您知道所需图像的 URL,您所需要做的就是将 AsyncImageView 添加到屏幕,并使用 AsyncImageView 向 GlobalImageProvider 发出请求 作为该图像的“处理程序”。

如果您不喜欢将数据与 ImageView 混合,您可以在 GlobalImageProvider 和 AsyncImageView 之间添加一个 ViewController。他获取图像响应并将其放入 ImageView 中。

大概就是这样,希望对你有一点帮助。

关于iphone - 在 iPhone 中延迟加载图像的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040079/

相关文章:

iPhone 音频和 AFSK

iphone - 在 iPhone 上仅将完成按钮添加到数字键盘

ios - 带有 AutoLayout 的 UITableViewCell 中的动态图像高度

ios - Swift - 分组样式 TableView 设计

entity-framework - 使用显式包含时,即使在 ProxyCreation false 之后,也会出现 JSON 序列化 Entity Framework 自引用循环错误

c# - Entity Framework Core 5 关闭加载NavigationProperties

javascript - 如何在 Angular 7 中创建延迟加载 TreeView

iphone - 如何以编程方式将用户锁定到 iOS 6 中的单一应用程序模式?

iphone - 在 iPhone Objective C 中的 UIDatePicker 中禁用过去日期

ios - self.tableView.delegate = self swift