在 iOS 中使用 UIWebView 来渲染图像而不是 UIImageView 使用的内存要少得多。说得通?
Posted
技术标签:
【中文标题】在 iOS 中使用 UIWebView 来渲染图像而不是 UIImageView 使用的内存要少得多。说得通?【英文标题】:Using UIWebView to render images instead of UIImageView in iOS uses much less memory. Makes sense? 【发布时间】:2010-09-16 14:27:10 【问题描述】:我刚刚发现——我没有使用UIImageView
来显示图像——而是使用UIWebView
,它使用的内存要少得多。这对任何人都有意义吗?
我所做的是获取一个大小约为 280kb 的普通 .jpg 文件,并在一个简单的应用程序上显示它,只需一个 UIImageView
。查看 Instrument 的 Object Allocations 工具,应用程序的内存占用约为 3MB。
然后我删除了UIImageView
,并添加了UIWebView
,代码如下:
NSString *html = @"<html><body style='margin:0;'><img src='my_test_image.jpg'></body></html>";
[web loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
然后内存使用量下降到 700kb 左右。
有什么想法吗?
【问题讨论】:
我怀疑你的 3MB 仪器:) 【参考方案1】:UIWebView 缩放您的图像并裁剪它(当它高于屏幕尺寸时......)这是 Apple 的一项优化,以便轻松打印网站上的每张图像,内存使用量更少......图像质量随图像大小而变化。
UIImageView 没有那种优化。
【讨论】:
【参考方案2】:我认为它不会有这么大的不同,即使是最老的 iPod Touch 也有 128MB 的 RAM。只需正确分配并释放它,无论哪种方式都应该没问题。
【讨论】:
以上是关于在 iOS 中使用 UIWebView 来渲染图像而不是 UIImageView 使用的内存要少得多。说得通?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iOS 照片库中获取图像并在 UIWebView 中显示