iPhone - 内存管理 - 我是否正确创建和发布此变量?

时间:2010-08-18 21:06:05

标签: iphone memory memory-management

好的,继续这种情况。我有一个View控制器类作为主视图(MainView)。它包含另一个视图控制器负责的子视图(ChangingView)。现在,每隔四秒,ChangingView需要更改其视图。我目前正在做的事情是这样的。

ChangingView = [[AnotherView alloc] initWithNibName:@"AnotherView" bundle:[NSBundle mainBundle]];
[MainView addSubview:ChangingView.view]; 

现在,在4秒钟之后,在线路上方被呼叫之后,我会执行以下操作。

[ChangingView release];
[ChangingView.view removeFromSuperview];

发生的事情是我得到像疯了一样的记忆警告。最后它给了我“程序发送'0'”或“数据格式化程序当前不可用”的调试消息。我相信这两个意味着我失去记忆。我不认为这应该发生,因为视图中的东西数量不是多个MB,因此由于某种原因它必须是堆叠或其他东西。如果您需要任何澄清,请询问,任何帮助将不胜感激,因为我目前难以理解。提前谢谢。

2 个答案:

答案 0 :(得分:0)

(我原先说不,但我错过了发布后来发生的事实,他正在保存视图控制器参考)。

如果您看到内存使用量攀升,请确保您添加为子视图的视图真正发布...这也是使用Instruments尝试并按照分配的内容进行操作的好时机解除分配。

答案 1 :(得分:0)

有些东西让我对这两行代码感到烦恼:

[ChangingView release];
[ChangingView.view removeFromSuperview];

我认为您在发布后实际访问ChangingView.view而没有收到EXC_BAD_ACCESS错误的事实意味着您没有正确地发布各处的ChangingView(顺便说一下,您应该调用ChangingView * **控制器***,以免混淆人们是否是UIView或UIViewController的子类。

检查是否实际调用了ChangingView的dealloc方法。永远。没有足够的信息或代码告诉你忘记发布它的地方,但我打赌这就是问题所在。