【发布时间】:2015-01-11 07:51:06
【问题描述】:
我正在对我的一个应用程序进行重大更新,并试图减少内存使用量并使其更清洁、更快。我正在使用 Instruments 来分析应用程序并且我正在查看 UIImage 分配,当应用程序启动时我有大约 10 个(虽然一个是状态栏图标?不知道为什么包括在内)。当我打开我的设置视图控制器(在 iPad 上的拆分视图控制器中)时,它基本上有一个包含每个表格视图单元格的图像,这很多。首次展示它会添加 42 张图像。当我关闭这个视图控制器时,仍然有 52 个图像,而现在应该只有 10 个。如果我再次展示控制器,现在有 91 个图像。这一直在上升。 Instruments 没有说有泄漏,我不知道发生了什么。每个单元格设置一个图像,如
cell.imageView.image = [UIImage imageNamed:@"Help-Icon"];
我怎样才能弄清楚为什么这些图片没有被发布?
编辑:
我认为它现在正在释放图像。我从直接设置imageView图片改为setImage:,所以现在表格单元格是这样的:
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = NSLocalizedString(@"Homepage", @"Homepage");
UIImage *cellImage = [UIImage imageNamed:@"Homepage-Icon"];
[cell.imageView setImage:cellImage];
[MLThemeManager customizeTableViewCell:cell];
return cell;
MLThemeManager 是一个单例,它使用主题类将单元格的属性设置为主题,如文本标签颜色、突出显示颜色、详细文本标签颜色和背景颜色。
【问题讨论】:
-
阅读
imageNamed:的文档。图片已缓存。 -
但不应该在初始演示后不添加图像吗?它说更多的被添加到内存中并且永远不会被释放。
-
你能分享你的 CellForRowAtIndexPath 吗?
-
是的,我会进行编辑并添加代码
标签: ios objective-c memory-management memory-leaks