3

我有以下功能:

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

return [result autorelease];

}

为什么 Clang 会给我以下投诉?

  • 1 调用函数“CFURLCreateStringByAddingPercentEscapes”返回一个核心基础对象,保留计数为 +1(拥有引用)
  • 2 对象发送 -autorelease 消息
  • 3 对象作为拥有引用返回给调用者(单个保留计数转移给调用者)
  • 4 对象过度自动释放:对象已发送 -autorelease 但对象的保留计数为零(本地可见)

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

4

1 回答 1

3

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

于 2009-05-14T06:20:43.790 回答