具有动态高度的UIWebView会导致内存崩溃

Ser*_*eev 6 memory iphone uiwebview ipad ios

我有一个原生iOS屏幕,UITableView内部显示一些文章.此表中的某些单元格显示文章图像,标题,作者,评论等.但是内部有一个单元格UIWebView显示文章内容.此单元格具有动态高度,具体取决于内容大小.文章内容从服务器作为JSON响应中的html字符串,可能包含支持HTML格式的图像,视频和其他内容.我可以根据一些要求使用正则表达式编辑此字符串(例如,根据应用程序设置增加字体大小).这是一个代表我的UI结构的图像: 在此输入图像描述

问题是,一旦文章内容非常大,内部的UITableView单元格UIWebView也会变得非常大,这会导致内存崩溃.在我的情况下,这种崩溃只发生在iPhone 6 Plus上.在所有其他设备上,包括iPhone(5,5S,6),iPad(2,3,4)(以及可能支持iOS 7的其他设备)应用程序正常工作.我怀疑其原因是iPhone 6 Plus具有高分辨率屏幕和仅1 Gb的内存.因此,使用与其他设备相同的内存量来呈现相同的内容,但是在更高的分辨率下,会导致内存崩溃.

我用UI创建了两个测试应用程序,如下图所示:

在此输入图像描述

两个应用程序都将相同的HTML内容加载到一个中UIWebView.两个应用程序中没有其他ui或逻辑.

如果a)全部正常工作,则会出现滚动指示器,仅显示可见内容.当我快速滚动时,我可以看到一段时间后替换为渲染内容的空白区域.

在情况下b)UIWebView伸展以适合内容大小.测试应用程序崩溃(作为我真正的应用程序).正如我怀疑在这种情况下甚至呈现的隐形内容会导致内存崩溃.

所以我的问题是: 如何在不滚动内部的情况下修复此错误UIWebView?只UITableView应该是可滚动的

M D*_*vid 1

使您的 UITableViewCell 可重用。IE (UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];)。有一点非常重要,不要使用[UIimage imagenamed:@"Imagename.jpg"]它,这会导致内存崩溃,你可以使用[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Imagename" ofType:@"png"]];. 我希望它可能有所帮助。