3

我有这段代码可以简单地将今天的日期作为格式化的字符串返回:

+(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'创建格式化程序时手动释放它,但我不能在这里释放,因为我必须返回值,所以我添加了自动释放。

我怎样才能更好地改进它?

谢谢,

河。

4

2 回答 2

9

您正在 -autoReleating NSString,而不是格式化程序。

你不需要 autoRelease 因为 -stringFromDate: 给你一个已经 autoReleased 的字符串。

这是您的代码看起来像的一种方式:

+(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;

}
于 2010-05-13T07:07:16.613 回答
0

鉴于 an始终采用以下格式NSDatedescriptionYYYY-MM-DD HH:MM:SS ±HHMM

+ (NSString *) getTodayString_YYYY_MM_DD
{
    return [[[NSDate date] description] substringToIndex:10];
}

只是把它扔在那里。它可能不如该NSDateFormatter方法有效。

于 2010-05-13T11:13:14.320 回答