我曾经在许多代码中看到[[NSMutableData data] retain]指令,但我不知道保留对象何时发布...你能帮我理解吗?
提前,
的Stephane
答案 0 :(得分:6)
简短的回答是:在您发布之前不会发布。你增加了保留计数,这样你就承担了以后释放它的责任。
您可能已经看到的情况是人们直接分配给伊娃的情况;释放应该在-dealloc
中 - 当包含对象被销毁时 - 或者重新分配ivar时。但在任何一种情况下,你都必须记住这样做,否则你的代码就会泄漏。
答案 1 :(得分:2)
不是。它泄漏了。
[NSMutableData data]
已经自动释放 - 它将在当前自动释放池的末尾释放(即在大多数情况下当前运行循环迭代的结束。)通过发送-retain
消息,你告诉它要稍微延长一点,但如果没有相应的-release
消息,它将永远不会有0
的保留计数,因此永远不会被释放。
答案 2 :(得分:1)
[NSMutable data]只有在你为它的保留计数加1时才会释放它。通过使用[[NSMutable data] retain]
,您将为其保留计数添加一个,并且通过释放它,您将从保留计数中减少一个。所以当你完成使用它(在dealloc方法中)释放它。