Obj-C,如何释放NSString返回值?

时间:2011-01-17 13:53:25

标签: xcode object memory-leaks

我正在尝试从函数中的数据库中获取NSString值,但是我不断得到分析器警告。继承我的代码......

- (NSString*)getCategoryDesc:(int)pintCid { 
NSString *ret;
ret = value from my db ...  
return [ret autorelease];
}

它不喜欢

return ret;
return [ret retain];

1 个答案:

答案 0 :(得分:1)

关键点(你没有向我们展示)是:“我的数据库中的价值”是做什么的?

如果它正在做类似的事情:

ret = [[NSString alloc] initWithString:@"something"];

然后你负责释放对象,但是如果它正在做类似

的事情
ret = [NSString stringWithString:@"something"];

你不需要释放它(事实上,你绝对不能)。

因为您的方法名为“get *”(而不是“create *”),所以您需要返回调用者不拥有的对象(通常,这意味着自动释放的对象)。

阅读object ownership policy rules