我使用以下代码,简单地将今天的日期作为一个格式化的字符串返回:
+(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。
发布于 2010-05-13 15:07:17
你-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;
}发布于 2010-05-13 19:13:14
假设NSDate的description始终采用YYYY-MM-DD HH:MM:SS ±HHMM格式
+ (NSString *) getTodayString_YYYY_MM_DD
{
return [[[NSDate date] description] substringToIndex:10];
}只是把它扔出去。它的效率可能比NSDateFormatter方法低。
https://stackoverflow.com/questions/2824959
复制相似问题