以下是最好的?
-(NSString *)send
{
NSString *str = @"hai";
return [str retain];
}
-(NSString *)send
{
NSString *str = @"hai";
return [[str retain] autoRelease];
}
答案 0 :(得分:2)
这个更好:
-(NSString *)send {
return @"hai";
}
你的第二个建议,即[保留+ aurorelease],毫无意义。 尽管这样做没有任何问题,但是第一个并不擅长命名约定:它返回一个保留的实例,尽管该方法没有描述它在方法名中包含copy / retain / alloc这样做。
答案 1 :(得分:2)
通常你应该返回自动释放的对象,除非有充分的理由不这样做。这样调用者永远不会负责释放它自己不分配的对象。如果您从其他函数获取的字符串不是自动释放的字符串,则无论如何都要调用[autorelease]。