感谢您的光临。
这个静态分析仪警告让我烦恼 这是我的代码
+ (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,但我想知道为什么静态分析仪在这里显示潜在的内存泄漏。
忽略此警告是否安全?
欢呼声 阿伦
答案 0 :(得分:4)
忽略此警告是不安全的,因为您违反了Cocoa内存管理的“规则”之一:“您不拥有通过引用返回的对象”。
将功能的最后一行更改为
return [result autorelease];
并且Xcode警告应该消失。
您应该阅读Apple有关该主题的文档Basic Memory Management Rules,这些文档将更详细地介绍各种约定。坚持这些规则是很好的,因为阅读或使用您的代码的任何人都会期望它的行为方式。