返回NSString没有内存泄漏?

时间:2010-03-04 10:08:22

标签: iphone

以下是最好的?

-(NSString *)send
{
  NSString *str = @"hai";
  return [str retain];
}
-(NSString *)send
{
  NSString *str = @"hai";
  return [[str retain] autoRelease];
}

2 个答案:

答案 0 :(得分:2)

这个更好:

-(NSString *)send {
return @"hai";
}

你的第二个建议,即[保留+ aurorelease],毫无意义。 尽管这样做没有任何问题,但是第一个并不擅长命名约定:它返回一个保留的实例,尽管该方法没有描述它在方法名中包含copy / retain / alloc这样做。

答案 1 :(得分:2)

通常你应该返回自动释放的对象,除非有充分的理由不这样做。这样调用者永远不会负责释放它自己不分配的对象。如果您从其他函数获取的字符串不是自动释放的字符串,则无论如何都要调用[autorelease]。