Объект отправлен -авто, слишком много раз

У меня есть этот код, который просто возвращает сегодняшнюю дату в виде строки в формате:

+(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 метод.

Другие вопросы по тегам