2012-01-13 47 views
1

我想知道如何在注销时释放视图控制器在应用程序中保留的所有内存。如何在注销IOS时释放保留的对象或应用程序的内存

我使用仪器检查了我的应用程序,注销时没有释放分配,虽然我在我的日志记录屏幕上。

由于在使用应用程序一段时间后,仪器显示的分配变为10Mb,但注销后我登录屏幕,但分配仍然相同,即10MB。

我不知道如何修改注销功能,这样我可以清除其他视图保留数据..

+0

这取决于你的逻辑和场景。你如何呈现'LoginScreen'。你是否弹出所有其他屏幕,并且你是否正确释放了'dealloc'中的所有指针? – 2012-01-13 14:02:31

+1

如果您在注销操作时从navigationController弹出视图控制器,请检查是否正在调用您的dealloc方法...如果它被调用,然后在那里释放所有的属性和类变量。 – Ali3n 2012-01-13 14:04:30

+0

弹出所有其他屏幕?我需要检查appdelegate类或所有视图控制器的dealloc>? – 2012-01-13 14:07:44

回答

1

你似乎想要做的就是创建自己的垃圾收集器。

改变你的心态。

你需要瞄准的是:释放任何内存的对象,它们保留在他们的“dealloc”方法中。

0

重要的是释放你分配,复制,mutableCopy,新的或保留的每个对象。 另外,使用模拟器中的僵尸工具来检查僵尸(除了泄漏和分配工具)。

你说:“清除其他视图保留的数据”。但“其他观点”应该清除他们保留的数据。

+0

僵尸工具不会帮你找到泄漏,请使用静态分析器。如果事实上僵尸会让它无法发布,并且你收集的任何数据都是垃圾。 – 2012-01-13 15:45:56

+0

为什么它的价值我没有说僵尸会帮助他找到泄漏,但是使用僵尸工具可能在他的情况下使用有限(我曾说过使用泄漏和分配工具)。 – ader 2012-01-13 16:24:41

+1

我没有投票给你,只是指出了一个可能的红鲱鱼。可能节省运行时间。 – 2012-01-13 16:37:15

相关问题