1

我正在做一些内存泄漏分析,并注意到我添加到我的 tableview 单元格 contentView 的 customView 正在建立并且永远不会被破坏。我确定我正确地处理了它们。

我在表中只有 5 个单元格,但有时当调用此函数时,它会将一个在其 contentView 中没有子视图的单元格出列。

我不明白这怎么会发生?contentView 从未真正被破坏,只是以某种方式从单元格中删除。

谁能解释这里发生了什么?

我在下面发布了我的功能。

谢谢斯图尔特

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

    static NSString* const CELL_IDENTIFIER = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];

    BRAContentView *contentView = nil;
    for ( UIView *subView in cell.contentView.subviews )
    {
        if ( [subView isKindOfClass:[BRAContentView class]] )
        {
            contentView = (BRAContentView*)subView;
            break;
        }
    }


    if ( !contentView )
    {
        contentView = [BRAContentView content];
        [cell.contentView addSubview:contentView];
        [contentView setTranslatesAutoresizingMaskIntoConstraints:NO];

        NSDictionary *viewDict = [NSDictionary dictionaryWithObject:contentView forKey:@"contentView"];

        NSArray *constraintsArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[contentView]-0-|" options:0 metrics:nil views:viewDict];
        constraintsArray = [constraintsArray arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[contentView]-0-|" options:0 metrics:nil views:viewDict]];

        [cell.contentView addConstraints:constraintsArray];
    }

    contentView.delegate = self;
    // customise contentView here

    return cell;
}
4

0 回答 0