0

感谢您的光临。

这个静态分析器警告让我很烦这是我的代码

+ (INURLConnection*)createConnectionForRequest:(INHTTPRequest *)aRequest {

    INURLConnection* result = [[INURLConnection alloc] init];
    if(result){
        result.request = aRequest;
        result.error = nil;
    }
    return result;
}

“返回结果”行向我显示潜在的内存泄漏警告(当我使用分析器时)。这是一个创建方法,消费的方法是这样的

INURLConnection *connection_tmp = [INURLConnection createConnectionForRequest:aRequest];
self.connection = connection_tmp, [connection_tmp release];

所以创建连接返回保留计数为 1,self.connection 增加保留计数,并且还有一个释放。

我知道我可以使用 ARC,但我想知道为什么静态分析器在这里显示潜在的内存泄漏。

忽略此警告是否安全?

欢呼阿伦

4

1 回答 1

4

忽略此警告是不安全的,因为您违反了 Cocoa 内存管理的“规则”之一:“您不拥有通过引用返回的对象”。

将函数的最后一行更改为

return [result autorelease];

并且 Xcode 警告应该消失。

您应该阅读 Apple 关于该主题的文档Basic Memory Management Rules,其中更详细地介绍了各种约定。遵守这些规则是很好的,因为任何其他阅读或使用您的代码的人都会期望它以这种方式运行。

于 2012-06-22T01:23:26.810 回答