【发布时间】:2016-03-11 19:50:14
【问题描述】:
我有一个自定义的 UITabBarController。我正在记录与它一起使用的 4 个 ViewController,我得到了我期望的结果。
但是,当我点击 NavigationController 中的后退按钮(删除自定义 UITabBarController)时,4 个 VC 中只有 3 个调用了他们的 dealloc 方法。为什么会这样?
2016-03-11 14:46:06.966 [24357:9827962] -[CustomTabBarController dealloc]
2016-03-11 14:46:06.967 [24357:9827962] -[FourthViewController dealloc]
2016-03-11 14:46:06.967 [24357:9827962] -[SecondViewController dealloc]
2016-03-11 14:46:06.968 [24357:9827962] -[FirstViewController dealloc]
ThirdViewController 永远不会被释放。我在那里有一个日志语句,但无法弄清楚为什么这可能不像其他的那样被释放。有什么想法吗?
【问题讨论】:
-
你可能在某处有一个保留周期
-
正如 dan 所说,确保
ThirdViewController不被任何其他对象持有。它将帮助我判断我是否可以看到您的代码。 -
@dan 是的,有。我在堆上有一个块指向自己,当 TabBarController 被释放时,ThirdViewController 仍然被这个块指向。
标签: ios objective-c uitabbarcontroller dealloc