为什么Clang会抱怨我所有的自动释放物品?

时间:2009-05-10 10:36:28

标签: objective-c memory-leaks clang

我有以下功能:

- (NSString *)urlEncodedValue {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                   kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   CFSTR("?=&+/\r\n"), 
                   kCFStringEncodingUTF8
);

return [result autorelease];

}

为什么Clang会给我以下抱怨?

  • 1调用函数'CFURLCreateStringByAddingPercentEscapes'返回一个Core Foundation对象,其中包含+1保留计数(拥有引用)
  • 2对象已发送-autorelease消息
  • 3对象作为拥有引用返回给调用者(单个保留计数转移给调用者)
  • 4对象过度自动释放:对象被发送-autorelease但对象为零(本地可见)保留计数

据我所知,这符合Apple关于内存管理和对象所有权的指导原则。我是否必须明确释放该对象?在我的项目中,这个错误已经出现了19次,所有情况都类似。我做错了什么?

1 个答案:

答案 0 :(得分:3)

我找到了自己问题的答案,如果有其他人偶然发现问题,请在此处发布。我使用的是checker-0.198,checker-0.204报告没有这样的问题。似乎这是暂时的倒退。