我试图修复了一堆,我的泄漏UIWebView
导致,并不能找到其来源,也不是一个解决办法。 我要做的就是充分利用网络的一些内容通过网络请求,然后组装我的HTML并加载它在运行:
NSString* body = <some HTML>;
NSString* html = [NSString stringWithFormat:kHTMLTemplate, [self scripts], [self styles], body];
[_webView loadHTMLString:html
baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
每次有新的内容可用,我执行loadHTMLString
再度刷新网页视图。 我重复使用相同的网络视图,相同的控制器,同一切。
仪器显示了一个很奇怪的模式中,所有泄漏的对象有各种规格的通用块和他们都没有附带任何信息:没有一个负责任的图书馆,没有一个负责任的框架等,每一次loadHTMLString
执行,新的泄漏被添加。
它似乎有多个线程在SO约UIWebView
内存泄漏。 我已经尝试了,我发现所有的建议(例如,设置NSURLCache
为零,或将其复位;我试图释放现有的UIWebView,每次我有新的数据等分配一个新鲜的),但没有任何帮助。
我调查到现在导致一个明确的结果:它似乎泄漏是,如果我加载到视图中的HTML包含一些JavaScript才存在。 如果您发现html
上面的字符串,它是由几部分组成; 一个是[self scripts]
其是简单地返回一个功能:
return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>"
"<script type='text/javascript' src='jmy.js'></script>";
如果我删除此,无泄漏的存在。 但泄漏,只要我一出现添加<script>
标记我的HTML。 他们甚至会出现,如果我只是包括jQuery的文件(或任何其他JS文件,对此):
return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>";
因此,问题:有没有人对这里发生了什么想法? 显然,包括JavaScript文件到我的HTML正在使UIWebView
泄漏内存。
事实上,泄漏的出现既当我重复使用同一个UIWebView
对象或当我每一次我有内容实例化一个新的,让我觉得必须有一些JavaScript文件中被处理的方式loadHTMLString
这导致了泄漏。
有谁知道这可能是固定?