0

我正在做一个 Apple Developer Tutorial,我有几个关于底部代码行的基本问题:

  1. 这些代码行中的任何一行都没有分配和初始化它们创建的对象?这是因为对象在创建时就被赋值了吗?

  2. dequeueReusableCellWithIdentifier 方法 - 此方法返回 nil 的唯一方法是是否没有与单元标识符参数同名的单元对象?如果池中没有可以重用的单元格,它会创建一个单元格还是返回 nil 呢?文档说明该方法返回 - 具有关联标识符的 UITableViewCell 对象,如果可重用单元队列中不存在此类对象,则返回 nil。

提前感谢您的帮助

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

BirdSighting *sightingAtIndex = [self.dataController objectInListAtIndex:indexPath.row];
4

1 回答 1

1

从评论中......

您发布的代码行实际上并没有创建任何东西。他们获得对在其他地方创建的事物的引用。其他东西——无论是你的代码还是框架代码——已经用 alloc/init 实例化了它们,现在给你访问权限。

在表格视图示例中,如果您在表格视图中注册了一个类/笔尖,那么它会为您创建单元格。如果没有,那么您在dequeueReusableCellWithIdentifier:返回时创建它nil。无论哪种方式,当它返回非零时,它都是在某个时间点创建的对象,而不是您的程序当时所在的那个点。

(self.dataController 不是我认识的东西,但必须应用相同的逻辑......它的列表是由你之前所做的事情预先填充的,或者它正在生成东西并按照你的要求将它们提供给你。)

于 2012-12-13T20:00:00.973 回答