Obj-C,如何释放 NSString 返回值?
我试图在函数中从数据库中获取 NSString 值,但是我不断收到分析器警告。这是我的代码......
- (NSString*)getCategoryDesc:(int)pintCid {
NSString *ret;
ret = value from my db ...
return [ret autorelease];
}
它不喜欢
return ret;
return [ret retain];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关键点(您没有向我们展示)是:“来自我的数据库的值”是做什么的?
如果它正在做类似的事情,
那么您有责任释放该对象,但如果它正在做类似的事情,
您不需要释放它(实际上,您一定不能)。
因为你的方法被命名为“get*”(而不是“create*”),所以你需要返回一个调用者不拥有的对象(通常,这意味着一个自动释放的对象)。
阅读 对象所有权策略规则。
The key point (which you're not showing us) is: what does "value from my db" do?
If it's doing something like:
then you are responsible for releasing the object, but if it's doing something like
you do not need to release it (and, indeed, you must NOT).
Because your method is named "get*" (and not "create*"), you need to return an object that the caller does not own (generally, that means an autoreleased object).
Read up on the object ownership policy rules.