我有一个iPad应用程序(IOS 4.3& 5.0),每次用户向前或向后翻页时都会创建一个至少有2个子视图的UIView。 2个子视图是UIWebView对象。
在每次相关的滑动中,旧的UIWebViews被删除并正确释放(removeFromSuperview然后stopLoading并将委托设置为nil)并且取消分配父UIView。我可以确认父UIView和2个子UIWebViews都已完全消失了。
我可以看到webview上的保留计数,因为它们被删除了,我很确定它们每次都被删除了。 然而,我的内存分配在每次刷卡时继续增加~200-350k。仪器没有泄漏,但我可以看到内存使用量缓慢上升。 在iPad 1上,应用程序最终(在适度使用的6-10分钟内)收到多个内存警告并终止。生成LowMemory崩溃日志...等。
我们使用stringByEvaluatingJavaScriptFromString和loadRequest来填充Web视图。即使没有注入任何内容或将其加载到webViews中,内存使用也会增加。
是否有人在使用UIWebViews时遇到过这种行为?有没有人成功处理过这个问题?
虽然,评论&答案将不胜感激。
答案 0 :(得分:1)
尝试使用Instruments但使用“Allocations”模板并观看UIWebView的“#Living”列。我通常这样使用它:
答案 1 :(得分:0)
不知道有任何泄漏,但如果您每次滑动都在销毁并重新创建相同的视图层次结构,为什么不存储视图并重新使用它们呢?
无论它们是否泄漏,webview的设置成本都很高,因此重新使用它们只是重新加载内容应该可以提高性能,并且可以解决您的泄漏问题。
答案 2 :(得分:0)
[webview stringByEvaluatingJavaScriptFromString:@"something()"];
似乎有些奇怪的东西。