0

我正在使用 ARC,但似乎我的自定义 UITableCellView 没有发布。

TBMListingLineView 是 TBMGlobalCustomCell 的子类,TBMGlobalCustomCell 是 UITableCellView 的子类。

在 TBMListingLineView 中有 10 个 UILabel(非原子,保留)

我在两个类中都实现了从未调用过的方法 dealloc(断点不会停止执行)

当我滚动 TableView 时,UILabel 的数量在 Instruments/Allocations 中增加,这导致应用程序在多次内存警告后崩溃。

在此处输入图像描述

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

static NSString *CellIdentifier = @"Cell";

TBMGlobalCustomCell* cell;

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

switch(sortIndex) {
    case 0 :
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil || ![cell isKindOfClass:[TBMListingLineView class]]) {
            cell = [[TBMListingLineView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }

    break;

……

return cell;

}

4

1 回答 1

2

第一个问题是您dequeueReusableCellWithIdentifier为每个单元格调用两次。然后,如果第二个出列单元格没有正确的类,您也会“扔掉”它。

更好的解决方案是为表格视图中使用的每个单元(子)类使用不同的单元标识符,以便dequeueReusableCellWithIdentifier返回正确类的实例。

于 2013-08-16T20:42:58.020 回答