//点
我逐渐将许多对象(UIWebView)加载到内存中,一段时间后它崩溃了。请帮忙
//详细
我有一个带水平分页的UIScrollView,其中每个页面(带有一个单独的视图控制器)包含一个禁用用户交互的UIWebView。首先,只有第0页的webview#0被加载,当我在页面中前进时,应用程序逐渐发送加载特定数据的请求。下载的数据留在内存中。
从互联网源加载大约20个Webview后,我的应用程序冻结并崩溃。如果我使用存储在设备上的虚拟html字符串,这会在我加载大约50个webview后发生。但问题仍然存在。
我修复了大部分漏洞,并且只留下了Mallocs。由于在少量的UIWebviews Loaded中没有出现问题,我认为我必须更改我的代码来说3个webview并重用它们。但我不知道是否能解决这个问题。我开发了几个应用程序,之前不会崩溃,这是一个独特的案例。
我将指向webview和一些其他元素的指针存储在数组中的每个Webview(例如标签)中。每次加载新页面时,数组的计数都会增加。
我使用xcode 4.3和越狱的iphone 4进行开发。我关闭了我的xcode中的签名,因此应用程序被复制到我的手机上但未能附加到进程。我无法在手机上调试。我的应用程序在模拟器中运行良好但在我通过点击图标在手机上启动它后会崩溃一段时间。
从我能够描述的那样,您认为可能是什么问题? 感谢
答案 0 :(得分:0)
是的,肯定有太多UIWebView
s会因内存不足而导致崩溃。我不确定您拥有多个UIWebView
的原因是什么,但我会按照您的想法继续使用少量数据而不是创建多个。
根据您的设备在使用少量时没有崩溃,我会说问题在于使用了太多UIWebView
而不是与您的越狱设备的兼容性问题,例如。 / p>
答案 1 :(得分:0)
WebKit以其内存占用而臭名昭着。它为mallocs大块内存而失败,然后让你有机会释放其他资源。一个UIWebView
已经足够糟糕了。我在5 UIWebView
s的应用程序中遇到了这个问题,更不用说50了。
您可以尝试一些事情。其一,如果网页不太复杂,您可以使用替换视图(例如DTCoreText)来渲染它们。如果您必须拥有网页浏览量,则可以缓存各种HTML内容并使用UIWebView
重新呈现。
答案 2 :(得分:0)
您只需要使用三个UIWebView进行分页。让我们说用户在第2页(第1页是左页,第3页是在右边)。当使用滑动到第3页时,您只能在第3页的第1页上显示当前的Web视图。当用户在页面之间滑动时,您需要重新加载正确的html。
通过对网络内容进行一些缓存,一旦下载了内容,速度就不应该成为问题。