gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:48:49 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com