1

这可能是一个非常简单的问题,但我有点困惑如何正确地做到这一点。我读到我需要删除这行代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

但是,我如何检查单元格是否不为零?我使用的完整代码如下。如果有人也可以解释这一行的目的:

static NSString *CellIdentifier = @"Cell";

完整代码:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
4

1 回答 1

4

您在发布的代码中使用它。使用静态类型修饰符的原因是为了防止每次调用方法时都创建和初始化变量。“正常”变量会在每种方法中自动创建和删除,实际上您可以这样做:

auto NSString* cellId = @"CellId";

类型修饰符是默认的auto(编译器添加它)并且为了节省打字人们不要添加它。通过放在static类型前面,您可以更改此行为,以便在程序启动时变量仅初始化一次。之所以调用它,是因为每次调用该方法时,static带有类型修饰符的变量中的数据都不会自动从堆栈中删除……它是静态的/不会更改。static由此得名。

由于您一遍又一遍地使用单元格 ID,因此只需将其初始化一次,而不是在每次调用该方法时都创建/删除变量,这对性能有一点好处。对于具有大量单元格的表格尤其如此。但是我从未见过 usingautostaticvariables 之间的区别,但这至少是它背后的想法。

您不应该删除该[tableView dequeueReusableCellWithIdentifier:CellIdentifier];行。您需要它才能从表格视图中取出表格视图单元格。

于 2012-06-25T10:53:10.820 回答