可能重复:
内存泄漏NSAutoreleasePool
你好,
有人能告诉我如何修复这个漏洞吗(仪器显示这种方法有漏洞(:
-(void)goToThisUrl:(id) targetUrl
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (someCondition) {
// Doing some stuff here
}
// Instruments show memory leak on data
else {
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString: targetUrl]];
myTargetImage = [UIImage imageWithData:data];
// When releasing data(because data retainCount = 2), i got:
// Incorrect decrement of the reference count of an object that is not owned at this point by the caller
//[data release];
}
[pool release];
}
谢谢。
变量data
已经是一个自动释放的内存,由NSData便利函数创建。如果你没有分配它(通过调用alloc
(,那么你就不必释放它。所以,你不需要调用[data release]
,这里没有泄漏。当然,您可以使用Intruments和Leaks工具进行验证。