iPhone中惰性加载图片的最佳方法是什么?

6
我想知道最好的懒加载方式。对我而言,大多数应用程序会解析并从服务器获取URL,并将图像放入表视图中。因此,我已经实现了懒加载以提高应用程序的性能。现在我想知道最佳的图像懒加载方法。因为我已经使用了四种方法来实现懒加载:

  • 从Apple developer.com懒加载图像

  • 实现异步方法以改善懒加载

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

  • 使用ECOImageLoadingDemo应用程序进行懒加载。

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

预先感谢您的帮助。

敬礼,

Pugal

2个回答

4
根据我的经验,性能和内存解决方案位于滑块的两端。您可以在这两者之间移动您的解决方案,但缺点是拥有性能最佳的解决方案通常意味着内存最差,反之亦然。希望我已经解释得足够清楚了 :)
以下是我处理延迟加载图像问题的方式:
在我的应用程序中,我创建了一个名为GlobalImageProvider的实体。所有图像请求都通过此实体进行。这样,我可以控制下载使用的线程数,并且可以实现缓存系统(内存+本地磁盘),所有这些都对应用程序完全透明并具有完全控制。通过控制缓存的大小,我可以控制应用程序感觉的快慢。就性能而言,没有什么比在内存中已经创建了UIImage更好了。从内存的角度来看,您甚至可以选择禁用缓存。
更重要的是,我甚至可以在应用程序运行时根据网络质量动态更改线程数。
为了进行在线请求,我使用NSURLConnection,但计划切换到其他东西,因为我已经读到它泄漏内存。
在视图和控制器方面,我有一个AsyncImageView,它只是一个知道如何使用GlobalImageProvider的UIImageView。它知道在加载时显示活动指示器,并且可以处理来自GlobalImageProvider的响应。如果您知道要获取的图像的URL,您只需要将AsyncImageView添加到屏幕上,并向GlobalImageProvider发出请求,其中AsyncImageView是该图像的“处理程序”。
如果您不喜欢将数据与图像视图混合,您可以在GlobalImageProvider和AsyncImageView之间添加一个ViewController。他获得图像响应并将其放入ImageView中。
就是这样,希望对您有所帮助。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接