我正在做一些内存泄漏分析,并注意到我添加到我的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;
}