我想知道,延迟加载的最佳方法是什么。对我来说,大多数应用程序都使用了解析并从服务器获取 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/