内存泄漏问题 - NSConcreteData
// to set tip - photo in photo frame
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
UIImage *cellThumbImg;
if([data length]>0){ cellThumbImg=[UIImage imageWithData:data];} else { cellThumbImg=[UIImage imageNamed:@"130X90.gif"]; }
UIImageView *imgView=[[UIImageView alloc]initWithImage:cellThumbImg]; imgView.frame=photoFrame;
(cellThumbImg.size.height>=58 || cellThumbImg.size.width>=58 ) ? [imgView setContentMode:UIViewContentModeScaleToFill] : [imgView setContentMode:UIViewContentModeCenter] ;
[cell.contentView addSubview:imgView];
[imgView release];
我的问题与这个问题非常相似,
iPhone - Memory Leak - NSData dataWithContentsOfUrl & UIWebView
甚至,我已将以下代码添加到我的应用程序已完成启动中,如下所示。 以下代码用于将共享缓存内存设置为零容量。它几乎可以消除我的应用程序中的 NSConcreteData 泄漏。但是内存泄漏。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
[window makeKeyAndVisible];
}
我无法从堆栈溢出中找到此类问题的任何解决方案。
如果您能回答,我将不胜感激。
提前致谢。
最佳答案
你有三行,让我们把它们分解
1. NSData *imageData = [[NSData alloc] init];
2. imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"www.xyz.abc.com"]];
3. [imageData release];
第 1 行:分配并初始化一个新的 NSData。此 NSData 的引用计数为 +1
第 2 行:从互联网获取数据并将其放入 NSData 中。这会将第 1 行使用的变量设置为新的 NSData(设置为自动释放),隐藏第 1 行分配和初始化的 NSData
第3行:将释放第2行收到的NSData。
您可以删除第 1 行和第 3 行,然后将变量声明添加到第 2 行。因为它是自动释放的,所以稍后将由事件循环释放...
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"www.xyz.abc.com"]];
我建议您阅读内存管理部分here
关于iphone - iPhone中使用NSData的内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250050/