我有以下功能,導致*timeString
泄漏內存。我對Objective-C(和內存管理)相當陌生,但是我讀到你只需要release
對象,你首先需要的是alloc
。因爲我alloc
*formatter
,然後將其設置爲*timeString
,這是否意味着我現在還必須發佈*timeString
呢?內存泄漏從我沒有分配的對象
下面的代碼:
-(NSString *)getDate{
NSLog(@"getDate");
NSDateFormatter *formatter;
NSString *timeString;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
timeString = [formatter stringFromDate:[NSDate date]];
[formatter release];
return timeString;
}
編輯:這裏就是getDate
函數被調用:
-(NSString *)getFileName{
//nameofXMLFile = page_##
NSString *nameOfFile = [NSString stringWithString:pageTitle];
//nameOfXMLFile = page_##.DataCheckSheet.xml
nameOfFile = [nameOfFile stringByAppendingString: @".DataCheckSheet.xml"];
NSString *dateString = [self getDate];
dateString = [dateString stringByAppendingString: @"_"];
NSLog(@"datestring: %@", dateString);
dateString = [dateString stringByAppendingString:nameOfFile];
NSLog(@"datestring with append: %@", dateString);
//nameOfXMLFile = yyyy-MM-dd_page_##.DataCheckSheet.xml
nameOfFile = dateString;
return nameOfFile;
}
不,你有這個權利...你不應該釋放timeString ...但是,請允許我問:你在用那個TimeString做什麼?我的意思是,你回來了,這意味着你可能在某處使用它。你確定,沿途沒有保留物? – ATaylor 2012-08-14 16:47:24
它返回到另一個函數,然後附加到其他一些字符串。我將編輯該代碼到問題中,以便您看一看。 – BloonsTowerDefence 2012-08-14 16:49:34
還想到什麼:你不使用線程,對吧?因爲如果你這樣做了,你需要爲它創建一個單獨的AutoReleasePool。 – ATaylor 2012-08-14 16:50:48