如果UITableView中没有可重用的单元格,该怎么办?

use*_*236 1 iphone uitableview ios

任何人都可以告诉我,UITableView如果我有大量的细胞,管理的正确方法是什么?每个单元格的界面取决于各个部分(每个单元格在其内容视图中保留不同的UI元素).我不想使用可重复使用的细胞,因为它会重叠.

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
     cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault nil] autorelease];

 } else {
    cell = nil;
    [cell release];
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault nil] autorelease];
 }
Run Code Online (Sandbox Code Playgroud)

Ole*_*ann 5

不,你的代码不正确.首先,它甚至不会编译,因为[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault nil]它不是有效的语法.其次,该[cell release];行没有效果(这很好,因为如果它有,那将是错误的)但它的存在表明你还没有理解内存管理概念(还).

第三,也是最重要的,你绝对应该使用表视图的单元重用,特别是如果你有一个大表.如果您有不同类型的单元格,只需为它们使用不同的重用标识符,没问题.然后,表视图将创建多个重用池,并始终返回您要求的类型的单元格dequeueReusableCellWithIdentifier:.