我有一个表格视图,其中有 10 个显示图像的单元格。每次滚动时,应用程序都会分配更多内存(但不会在泄漏中显示这一点),但在分配中,我可以看到每次滚动时内存都会增加 2 兆字节。
这是泄漏的代码,特别是我设置图像视图图像的行(如果我将其注释掉,它不会泄漏):
- (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;
}
更新:我用 1 个视图控制器创建了一个简单的新项目:
- (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;
}
非常简单...我在这里看不到任何问题...但是滚动时会泄漏,内存消耗会随着时间的推移而增长...