iphone - iPhone中使用NSData的内存泄漏问题

标签 iphone cocoa-touch memory-leaks

内存泄漏问题 - 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/

相关文章:

iphone - 帮助向 UITableViewCell 添加背景 View

ios - 为什么在 iOS7 上触摸 UISearchBar 时,我的 UISearchBar 和 UITableView Cell Header 之间会出现间隙?

用于 mac OSX 的 Chrome 浏览器中 HTML5 Canvas getImageData 的 javascript 内存泄漏

c - 如何释放 C 中的 n 字节内存?

iphone - (iPhone SDK) 如何通过标签id修改UIButton?

iphone - 链接器中的 Xcode 错误

iphone - UITableViewCell 中的 UILabel 重叠

Dart - 检测未完成的 future

iphone - 使用 iOS 查找最近的机场

iphone - 如果密码正确,如何切换 iPhone View