在初始化期间存储到单元格的值永远不会在cellForRowAtIndex方法中读取?

时间:2011-12-13 04:33:47

标签: objective-c memory-management memory-leaks uitableview

在我的应用程序中,在tableview单元格中,用于索引方法的行,我使用以下代码行 当我的申请用于分析时,我得到了以下泄漏

代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

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

    // Configure the cell...
}

我得到这样的错误:

  

永远不会读取在初始化期间存储到单元格的值

2 个答案:

答案 0 :(得分:2)

在此行中初始化名为“cell”的局部变量:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

然后你立即在下一行中覆盖该值:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

分析仪正在引起你的注意。

在这种特殊情况下,这实际上不会导致泄漏。但它确实意味着您不会重复使用单元格,因此这会影响表格视图的性能。

如果您要删除此警告&不用担心UITableView性能。然后你需要在上面的代码中添加2行代码。请遵循以下代码。

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

以上代码将完美运作&删除警告。

答案 1 :(得分:1)

在此行中初始化名为“cell”的局部变量:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

然后你立即在下一行中覆盖该值:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

分析仪正在引起你的注意。

在这种特殊情况下,这实际上不会导致泄漏。但它确实意味着您不会重复使用单元格,因此这会影响表格视图的性能。