NSString *toDateTimeString = [dateFormatter stringFromDate:date];
仪器上方的 100% Memory
Leak
。
有没有解决方案?
答案 0 :(得分:3)
您是否在某个时候保留toDateTimeString
?仪器会告诉您泄漏的位置,但这并不一定能告诉您泄漏的真正原因。据我们从您发布的代码中可以看出,您不负责发布toDateTimeString
。请参阅the memory management rules。但是,如果有后续行,如:
[toDateTimeString retain];
没有匹配的版本,这将导致泄漏。如果是这种情况,则其他两个响应是正确的,您应该在方法结束之前释放(或自动释放)toDateTimeString
。或者,更好的是,只需删除保留。从-stringFromDate获取的字符串将在方法结束时生效,因此无需再次保留它。
答案 1 :(得分:1)
这是另一种可能性:有问题的代码在一个不会清除自动释放池的环境中运行。也许您在后台线程中运行此代码,该线程在进入时未声明自动释放池?
答案 2 :(得分:-3)
您可以释放toDateTimeString,但最好像这样初始化它:
NSString *toDateTimeString = [NSString stringWithString:[dateFormatter stringFromDate:date]];
正如文档所说,返回通过复制另一个给定字符串中的字符而创建的字符串。