很抱歉这个非常不明确的标题,但我只是用LEAKS调试我的程序,我在以下几行代码中发现了泄漏:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; // LEAKS shows 80%
[dateFormat setDateFormat:@"EEE-dd-MMMM-yyyy"];
NSDate *today = [[NSDate alloc] init]; // LEAKS shows 20%
NSString *theDate = [dateFormat stringFromDate:today];
[noteBookContent replaceObjectAtIndex:(currentPageCounter*3)+1 withObject:theDate];
[dateFormat release];
[today release];
LEAKS告诉我,一条线80%泄漏,另外20%。但为什么?我发布了两个......
它只有16个字节,所以我想我不应该担心......或者我应该担心这种东西?无论如何,我不知道为什么我的代码泄漏,这让我很烦,所以任何帮助都会非常感激。谢谢!
此外,虽然我们讨论LEAKS的主题 - 我的程序中还有一些其他泄漏块,例如'Malloc 32 Bytes Foundation - [NSCFString appendString:]'...... LEAKS不给我任何引用我的代码,这应该是泄漏。我怎么知道这个记忆泄漏的地方呢?
很抱歉,如果这是基本的东西,但你可能会收集,这是我第一次使用LEAKS。
提前致谢!
答案 0 :(得分:2)
如果您立即发布对象并且没有使用它们执行更多操作,我会更改您的方法。使用auroreleased对象尝试这种方法:
NSString *theDate = [NSDateFormatter localizedStringFromDate:[NSDate date]
dateStyle:@"EEE-dd-MMMM-yyyy"
timeStyle:nil];
[noteBookContent replaceObjectAtIndex:(currentPageCounter*3)+1
withObject:theDate];
*请注意,我没有检查此代码的准确性或泄漏,但它应该完全相同。
答案 1 :(得分:1)
尝试使用自动释放的初始化程序。例如,而不是使用
date = [[NSDate alloc] init];
使用
date = [NSDate date];
等等。
当我使用自动释放的初始化程序时,我不会收到泄漏消息。
答案 2 :(得分:0)
我想你也应该发布theDate
?