ARC和故事板的内存问题

时间:2012-06-07 01:39:02

标签: ios ipad memory storyboard automatic-ref-counting

我正在处理的iPad应用程序存在内存问题: 它只有3个视图控制器和一个导航控制器。 我使用push segue将视图控制器从A交换到B,然后使用push segue交换到C,然后使用popToRootViewController指令再次交换到A.

我已在所有视图控制器上实现了didReceiveMemoryWarning,只是为了知道发生了什么: 视图B从内存中正确卸载但视图C似乎复制自身并消耗内存! 当我触发内存警告时,我可以看到几个视图C回答......

它看起来不像圆形保留,因为我宣称我所有的父母参考都是弱的,并且因为泄漏仪器没有检测到任何泄漏,也没有保留周期,但记忆增加。
当用真正的iPad进行测试时,这会导致崩溃。

我该怎么办?我在哪里可以看到? 是否可以要求导航控制器释放其所有先前的对象但是当前的屏幕对象?

编辑:

在视图didload中,我添加了一些观察者,如下所示:

 NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter];
[dnc addObserver:self selector:@selector(undoManagerDidUndo:) name:NSUndoManagerDidUndoChangeNotification object:undoManager];
[dnc addObserver:self selector:@selector(undoManagerDidRedo:) name:NSUndoManagerDidRedoChangeNotification object:undoManager];

这样做是否有可能使dnc在某处保留对self的引用?

1 个答案:

答案 0 :(得分:1)

如果您使用ARC,则不必为零。一旦不再有强指针,ARC应自动释放它们。我不知道如何看待哪一个保留它。可能有,但我看了,找不到办法。你应该删除所有GestureRecognizer和其他任何东西,以便它会解除分配。