Объект отправлен -авто, слишком много раз
У меня есть этот код, который просто возвращает сегодняшнюю дату в виде строки в формате:
+(NSString*) getTodayString_YYYY_MM_DD {
NSDate * today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [[formatter stringFromDate:today] autorelease];
}
С инструментами у меня не возникает утечка памяти, но когда я анализирую, XCode говорит:
Object sent -autorelease too many times
Если я правильно понимаю, я должен вручную выпустить форматировщик, поскольку я создаю его, используя "alloc", но я не могу выпустить здесь, потому что я должен вернуть значение, поэтому я добавляю autorelease.
Как я могу сделать это лучше, чтобы улучшить это?
Спасибо,
р.
2 ответа
Вы - автоматический выпуск строки NSS, а не форматер.
Вам не нужен autoRelease, так как -stringFromDate: дает вам уже автоматически освобожденную строку.
Вот как ваш код может выглядеть так:
+(NSString*) getTodayString_YYYY_MM_DD {
NSDate * today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString *retString = [formatter stringFromDate:today];
[formatter release];
return retString;
}
Учитывая, что NSDate
"s description
всегда в формате YYYY-MM-DD HH:MM:SS ±HHMM
:
+ (NSString *) getTodayString_YYYY_MM_DD
{
return [[[NSDate date] description] substringToIndex:10];
}
Просто выбрасываю это туда. Это, вероятно, менее эффективно, чем NSDateFormatter
метод.