首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象发送-autorelease的次数太多

对象发送-autorelease的次数太多
EN

Stack Overflow用户
提问于 2010-05-13 15:04:06
回答 2查看 4.9K关注 0票数 3

我使用以下代码,简单地将今天的日期作为一个格式化的字符串返回:

代码语言:javascript
复制
+(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说:

代码语言:javascript
复制
Object sent -autorelease too many times

如果我理解正确,我必须手动释放格式化程序,因为我正在使用'alloc‘创建它,但我不能在这里释放,因为我必须返回值,所以我添加了自动释放。

我如何才能做得更好,以改善它?

谢谢,

r。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-13 15:07:17

你-autoReleasing的是NSString,而不是格式化程序。

您不需要autoRelease,因为-stringFromDate:已经为您提供了autoReleased字符串。

以下是您的代码可能的一种形式:

代码语言:javascript
复制
+(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;

}
票数 9
EN

Stack Overflow用户

发布于 2010-05-13 19:13:14

假设NSDatedescription始终采用YYYY-MM-DD HH:MM:SS ±HHMM格式

代码语言:javascript
复制
+ (NSString *) getTodayString_YYYY_MM_DD
{
    return [[[NSDate date] description] substringToIndex:10];
}

只是把它扔出去。它的效率可能比NSDateFormatter方法低。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2824959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档