在cellForRowAtIndexPath中将Custom表视图单元格出列时,Instruments会显示泄漏

时间:2013-11-16 03:40:32

标签: ios uitableview automatic-ref-counting xcode-instruments

使用自定义表格视图单元格时,我在与表视图委托方法cellForRowAtIndexPath相关的工具中出现内存泄漏。我正在使用XCode 5但ARC已被禁用。我已经创建了我的自定义表格视图单元格作为单独的xib,我使用nibWithNibName在我的viewDidLoad方法中加载了xib(如果我记得的话,检查你是否有一个单元格,所以你不必检查单元格!= nil in委托方法)。以下是相关的代码部分:

  

static NSString * const TransactionResultCellIdentifier =   @ “TransactionResultCell”;

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINib *cellNib = [UINib nibWithNibName:TransactionResultCellIdentifier bundle:nil];
    [self.transactionsTableView registerNib:cellNib forCellReuseIdentifier:TransactionResultCellIdentifier];

    cellNib = [UINib nibWithNibName:LoadingCellIdentifier bundle:nil];
    [self.transactionsTableView registerNib:cellNib forCellReuseIdentifier:LoadingCellIdentifier];
}


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

    TransactionResultCell *cell = (TransactionResultCell *)[tableView dequeueReusableCellWithIdentifier:TransactionResultCellIdentifier];

   if(self.isLoading){
    return [tableView dequeueReusableCellWithIdentifier:LoadingCellIdentifier];
    }
   else{
    TransactionResult *transactionResult = [self.transactionResults objectAtIndex:indexPath.row];
    cell.transactionDescriptionLabel.text = [NSString stringWithFormat:@"%@: %@", transactionResult.transactionID, transactionResult.transactionDescription];
    cell.transactionPriceLabel.text = [@"Price: $" stringByAppendingString:transactionResult.transactionPrice];

    self.totalPrice += [transactionResult.transactionPrice doubleValue];
   }


return cell;
}

仪器指向我上面的排队,我试图将自定义表视图单元格以及明显的UILabel泄漏出列,这是我在IB中定制的xib结构的一部分。

有人能指点我这里的解决方案吗?感谢...

1 个答案:

答案 0 :(得分:2)

问题可能是tableView:cellForRowAtIndexPath:中的第一行。如果self.isLoading的计算结果为true,则创建一个TransactionResultCell,它不会执行任何操作。该行应该在else子句内(以及return cell行)。