ios - 未调用 dealloc 进行控制

标签 ios objective-c memory-management uiwebview

我有一个 UIWebView 的子类,并在 View Controller 中使用它。

CViewController *controller = [[CViewController alloc] init];
self.webView = controller;
[controller release];

现在,在我的 View Controller 中,dealloc 被调用,我调用 [_webView release] 但是我的 UIWebView 子类中的 dealloc 从未被调用,并且每次我将一个 View Controller 放入堆栈时内存使用量都会增加,并且在从堆栈弹出后永远不会被释放。 我还可以在 Safari 开发工具中看到我的所有窗口,因此它们永远不会被发布。 我检查了retainCount(我知道它不是很有用),但它告诉我在分配给我的属性后retainCount是3? (属性是非原子的,保留)

最佳答案

retainCount 为 3 是转移注意力;毫无用处的干扰。 http://www.whentouseretaincount.com等等。

由于您有重复泄漏的情况,Heapshot analysis应该有助于查明内存残留的确切原因。

但是,您可能不需要走那么远。如果您的应用程序只有一个 UIWebView,那么您应该只需将分配工具配置为仅跟踪事件对象并跟踪保留/释放事件。这样,将内存中的对象列表过滤到 UIWebView,然后单击与该对象关联的保留/释放事件列表。额外的保留将在那里找到。

然而,这可能只是一种症状,而不是原因。原因可能是缓存出错,也可能是卡在 Web View 上的其他某个未正确释放的对象。

关于ios - 未调用 dealloc 进行控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15834754/

相关文章:

iphone - 如何通过从 iPhone 中的 UITapGestureRecognizer 的角落拖动 View 来增加 View 的大小和高度?

objective-c - Objective C 中的 unavailable 属性是什么意思?

c - 虚拟环境内存泄漏怎么办?

ios - 文件太多会影响应用程序的性能吗?

ios - 如何制作一个圆形的椭圆形按钮?

ios - Objective-C 更改 Sprite 表 - 麻雀

javascript - 我可以通过将其映射值设置为 null 来让 javascript 对象从内存中删除自身吗?

ios - 当支持横向时强制 iPad 应用程序以纵向启动

ios - 在多个 View Controller 中使用相同的 UIActivityIndi​​catorView

perl - Perl v5.10.1 是否有内存泄漏或如何解释 valgrind