我有一个UIWebView的子类,并在视图控制器中使用它。
CViewController *controller = [[CViewController alloc] init];
self.webView = controller;
[controller release];现在,在我的视图控制器中,dealloc被调用了,我调用了[_webView release],但是我的UIWebView子类中的dealloc从来没有被调用过,每次我把一个视图控制器放到堆栈上时,内存使用量都会增加,并且在从堆栈弹出之后再也不会被释放。此外,我可以在Safari开发工具中看到我的所有窗口,所以它们永远不会发布。我检查了retainCount (我知道它不是很有用),但在分配给我的属性后,它告诉我retainCount是3?(属性是非原子的,保留)
发布于 2013-04-05 23:18:09
3的retainCount是在转移注意力,是无用的消遣。http://www.whentouseretaincount.com之类的东西。
由于您有一个反复泄漏的场景,Heapshot analysis应该可以帮助精确定位内存滞留的原因。
但是,您可能不需要走那么远。如果您的应用程序只有一个UIWebView,那么您应该能够简单地将分配工具配置为仅跟踪实时对象和跟踪保留/释放事件。这样,就可以将内存中的对象列表向下过滤到UIWebView,并单击与该对象关联的保留/释放事件列表。额外的保留将在那里找到。
然而,这可能是一种症状,而不是原因。原因可能是缓存出错,也可能是挂在web视图上的其他对象没有被正确释放。
https://stackoverflow.com/questions/15834754
复制相似问题