什么时候[[NSMutableData数据]保留]被释放?

时间:2011-09-05 20:49:53

标签: iphone ios ios4 nsurlconnection

我曾经在许多代码中看到[[NSMutableData data] retain]指令,但我不知道保留对象何时发布...你能帮我理解吗?

提前,

的Stephane

3 个答案:

答案 0 :(得分:6)

简短的回答是:在您发布之前不会发布。你增加了保留计数,这样你就承担了以后释放它的责任。

您可能已经看到的情况是人们直接分配给伊娃的情况;释放应该在-dealloc中 - 当包含对象被销毁时 - 或者重新分配ivar时。但在任何一种情况下,你都必须记住这样做,否则你的代码就会泄漏。

答案 1 :(得分:2)

不是。它泄漏了。

[NSMutableData data]已经自动释放 - 它将在当前自动释放池的末尾释放(即在大多数情况下当前运行循环迭代的结束。)通过发送-retain消息,你告诉它要稍微延长一点,但如果没有相应的-release消息,它将永远不会有0的保留计数,因此永远不会被释放。

答案 2 :(得分:1)

[NSMutable data]只有在你为它的保留计数加1时才会释放它。通过使用[[NSMutable data] retain],您将为其保留计数添加一个,并且通过释放它,您将从保留计数中减少一个。所以当你完成使用它(在dealloc方法中)释放它。