2010-05-13 54 views
3

我有这样的代码,简单的回报今天的日期作为字符串格式化:对象发送-autorelease太多次

+(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”创建它手动释放格式化,而是因为我不得不返回值我不能在这里释放,所以我添加了自动释放。

我该怎么做才能改善它呢?

谢谢,

r。

回答

8

你是-autoReleasing 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; 

} 
+0

感谢您的纠正,格奥尔格! – mahboudz 2010-05-13 07:37:26

+0

好的,谢谢你的解决方案。 – mongeta 2010-05-13 07:42:40

0

假设一个NSDatedescription总是在格式YYYY-MM-DD HH:MM:SS ±HHMM

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

只是把它扔在那里。这可能比NSDateFormatter方法效率低。