2012-01-10 72 views
0

我试图修复我的应用程序中的内存泄漏,并偶然发现了一件非常有趣的事情。现在我不确定是否有某个地方出现了问题,或者仅仅是滥用了这项技术,所以我会尽力在您的帮助下清理问题。这里是发生了什么:UIViewController不释放其视图

  • 我创建加载从笔尖文件
  • 我释放控制器
  • 控制器的dealloc方法被调用其中i释放,我已经专门添加到自定义视图视图自定义的UIViewController视图层次作为出口(我做了一个可保留的属性)。它有一个调用nslog的dealloc方法。
  • 在笔尖文件(连接到控制器的视图出口)的主视图也是一个UIView其中也有一个呼叫在其的dealloc

的问题是NSLog的的一个子类 - 即使UIViewController的dealloc的是被叫,既没有主视图也没有孩子(有插座的人)被释放(他们的NSLog不会被触发)。

这是否正常?也许iOS不会立即发布视图?或者我应该开始寻找代码中的错误?如果是这样 - 最可能的原因是什么?

感谢您阅读

+0

您使用ARC吗? – 2012-01-10 22:35:52

+0

您是否将您的主视图附加到了您的视图控制器的保留属性中,而您并未发布?也许? – mattjgalloway 2012-01-10 22:35:53

+0

我认为你需要发布一些代码,因为很难完全理解你所做的事情。但它听起来像是在泄漏物体。 – drekka 2012-01-11 00:04:25

回答

0

问题与深夜调试的是,你甚至不考虑最简单的角度。因为我喜欢知道事情是如何工作的,并且从头开始做所有事情,所以我创建了自己的系统来切换视图控制器。问题是,即使我用来在需要时释放视图控制器,我忘了从超级视图中删除它,因此还有一个保留太多。现在有其他地方有泄漏,但我确定我会自己解决。感谢您的意见。