在 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 使用的内存要少得多。说得通?的主要内容,如果未能解决你的问题,请参考以下文章

UIWebview 如何在 iOS 中进行渲染?

如何从 iOS 照片库中获取图像并在 UIWebView 中显示

如何判断 UIWebView 何时完成渲染(未加载)?

iOS UIWebView - 在本机应用程序中缓存资产

如何在 iOS 的某些文件输入字段上获取 UIWebView 中 UIImagePicker 选择的图像?

iOS - 通过 JavaScript 获取我在 UIWebView 中单击的图像的 URL