仪器内存泄漏

时间:2011-03-29 05:19:27

标签: cocoa cocoa-touch memory-leaks

NSString *toDateTimeString = [dateFormatter stringFromDate:date];
仪器上方的

100% Memory Leak

有没有解决方案?

3 个答案:

答案 0 :(得分:3)

您是否在某个时候保留toDateTimeString?仪器会告诉您泄漏的位置,但这并不一定能告诉您泄漏的真正原因。据我们从您发布的代码中可以看出,您不负责发布toDateTimeString。请参阅the memory management rules。但是,如果有后续行,如:

[toDateTimeString retain];

没有匹配的版本,这将导致泄漏。如果是这种情况,则其他两个响应是正确的,您应该在方法结束之前释放(或自动释放)toDateTimeString。或者,更好的是,只需删除保留。从-stringFromDate获取的字符串将在方法结束时生效,因此无需再次保留它。

答案 1 :(得分:1)

这是另一种可能性:有问题的代码在一个不会清除自动释放池的环境中运行。也许您在后台线程中运行此代码,该线程在进入时未声明自动释放池?

答案 2 :(得分:-3)

您可以释放toDateTimeString,但最好像这样初始化它:

NSString *toDateTimeString = [NSString stringWithString:[dateFormatter stringFromDate:date]];

正如文档所说,返回通过复制另一个给定字符串中的字符而创建的字符串。