0

dequeueReusableCellWithIdentifier:正在实例化笔尖??

堆栈跟踪

我问是因为它似乎实例化了比一次在屏幕上显示的更多的单元格。(虽然少于表中的总行数)

我正在使用FRCTableViewDataSource将我的表视图绑定到 Core Data 中的一些 Artist 对象。不过我认为这并不重要,它只是充当香草表视图的数据源。

这是他们对 cellForRowAtIndexPath 的实现(我添加了日志语句)

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = nil;
    Class theCellClass = [self cellClassAtIndexPath:indexPath];
    if ([theCellClass isSubclassOfClass:[FRCTableViewCell class]])
        cellIdentifier = [theCellClass reuseIdentifier];
    NSLog(@"%@", cellIdentifier);
    UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:cellIdentifier];
    NSLog(@"%@", cell);

    ...

    return cell;
}

这是我对 awakeFromNib 的实现

- (void)awakeFromNib
{
    NSLog(@"waking");
}

控制台输出如下所示:

ArtistTableViewCell
waking
<ArtistTableViewCell: 0xc678ad0; baseClass = UITableViewCell; frame = (0 0; 295 50); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xc6789f0>>

TL;DR 我的表格视图比您的表格视图更具主动性。

有任何想法吗?

4

1 回答 1

0

您是否在单元格的笔尖中正确设置了重用标识符?如果没有,您每次都会得到一个新单元格,因为重用 ID 不匹配。

否则,是的,如果没有任何东西可以出队,这个版本的出队将实例化一个笔尖。从那里,它将创建您的单元格实例,从 nib yadyadayada 调用 awake。

于 2012-07-27T08:31:35.773 回答