gpt4 book ai didi

ios - UIImage 的 imageWithContentsOfFile 中的内存泄漏

转载 作者:行者123 更新时间:2023-12-01 16:18:55 24 4
gpt4 key购买 nike

我有一个表格 View ,其中有 10 个显示图像的单元格。每次滚动时,应用程序都会分配更多内存(但不会在泄漏中显示),但在分配中,我可以看到每次滚动时内存都会增加 2 兆字节。

这是泄漏的代码,特别是我设置 ImageView 图像的行(如果我将其注释掉,它不会泄漏):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.imageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"background_stripes" ofType:@"png"]];
return cell;
}

enter image description here

更新:我用 1 个 View Controller 创建了一个简单的新项目:
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.rowHeight = 130.f;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 16;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.imageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"background_stripes" ofType:@"png"]];


return cell;
}

非常简单...我在这里看不到任何问题...但是滚动时会泄漏,内存消耗会随着时间的推移而增长...

最佳答案

问题是没有泄漏=)。上图说明了分配而不是泄漏。泄漏在底部图形中,并且它们的图形是红色的,因此没有内存泄漏。您可能认为“Overall Bytes”代表内存泄漏,但事实并非如此,它只是程序在运行时分配的字节数。

关于ios - UIImage 的 imageWithContentsOfFile 中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316311/

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