使用自定义表格视图单元格时,我在与表视图委托方法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结构的一部分。
有人能指点我这里的解决方案吗?感谢...
答案 0 :(得分:2)
问题可能是tableView:cellForRowAtIndexPath:
中的第一行。如果self.isLoading的计算结果为true,则创建一个TransactionResultCell,它不会执行任何操作。该行应该在else子句内(以及return cell
行)。