dequeueReusableCellWithIdentifier总是返回非零?

dequeueReusableCellWithIdentifier返回的cell下面的经典模式总是不nil 。 为什么? 我们不应该先分配一些细胞,那么我们可以重新使用一些细胞吗?

我正在使用自定义单元格,并且它是在故事板中创build的。 (但是,如果我使用了默认的UITableViewCell,现象是相同的 – 返回的单元格总是non-nil )。

环境:Xcode 4.3.3 iOs 5.1

 AlbumListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AlbumCell"]; //cell always non nil --- why?? if(cell == nil){ cell = [[AlbumListCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AlbumCell"]; } 

如果你正在使用storyboard,并且将UITableViewCell的标识符设置为在故事板文件中的dequeueReusableCellWithIdentifier(在你的案例中是“AlbumCell”)中使用的标识符,那么UITableView将一直为你创build单元格。 我想这是故事板的一个特点。 如果在故事板中找不到标识符,则需要手动创build单元格。

我知道单元格的返回可能是零,你应该检查它。 通常情况并非如此,因为您应该根据您提供的标识符为您创build一个单元格。 如果你没有正确的标识符和池是空的我相信是这样的情况下,你会得到零,你可以做一个初始化创build一个新的单元格。 另外我应该添加在xcode中创build的原型单元格是创build单元格的原因,这就是为什么它应该以非零开始,而不必创build一个单元格。

为了更好地回答这个问题,请到iTunes并转到课程iPad和iPhone应用程序开发 – Paul Hegarty – Stanford CS193p课程。 去讲座(25)9.桌面观看26分钟。