我正在做一个Apple Developer Tutorial,我对底部的代码行有几个基本问题:
这些代码行中没有一行分配并初始化它们创建的对象?这是因为对象在创建时被赋值?
dequeueReusableCellWithIdentifier方法 - 此方法返回nil的唯一方法是,是否没有与单元标识符参数同名的单元对象?如果池中没有可以重用的单元格,它会创建一个还是返回nil,该怎么办?该文档声明该方法返回 - 具有关联标识符的UITableViewCell对象,如果可重用单元队列中不存在此类对象,则返回nil。
提前感谢您的帮助
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
BirdSighting *sightingAtIndex = [self.dataController objectInListAtIndex:indexPath.row];
答案 0 :(得分:1)
从评论....
您发布的代码行实际上并不是创建任何内容;他们得到了在其他地方创造的东西的参考。其他东西 - 无论是您的代码还是框架代码 - 已经使用alloc / init实例化它们,现在可以为您提供访问权限。
在表格视图示例中,如果您使用表格视图注册了一个类/ nib,那么它会为您创建单元格。如果没有,则在dequeueReusableCellWithIdentifier:
返回nil
时创建它。无论哪种方式,当它返回非nil时,这是一个在某个时刻创建的对象,而不是那个程序当时的那个点。
(self.dataController不是我认识的东西,但是同样的逻辑必须适用......要么它的列表是由你先前做过的事情预先填充的,要么就是生成东西并按照你的要求给你。 )