首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不为控件调用dealloc

不为控件调用dealloc
EN

Stack Overflow用户
提问于 2013-04-05 21:06:05
回答 1查看 213关注 0票数 0

我有一个UIWebView的子类,并在视图控制器中使用它。

代码语言:javascript
复制
CViewController *controller = [[CViewController alloc] init];
self.webView = controller;
[controller release];

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

EN

回答 1

Stack Overflow用户

发布于 2013-04-05 23:18:09

3的retainCount是在转移注意力,是无用的消遣。http://www.whentouseretaincount.com之类的东西。

由于您有一个反复泄漏的场景,Heapshot analysis应该可以帮助精确定位内存滞留的原因。

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

然而,这可能是一种症状,而不是原因。原因可能是缓存出错,也可能是挂在web视图上的其他对象没有被正确释放。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15834754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档