线程1:EXC_BAD_ACCESS(代码= 2,地址= 0 * 879fc0)

时间:2012-10-04 08:17:03

标签: xcode

我有一个UITableViewController(CoffeeBeansViewController),它从sqlite表中查找值并在表中显示内容。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"RegionCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
    int rowCount = indexPath.row;
    CoffeeBeans *coffeeBeans = [self.theCoffees objectAtIndex:rowCount];
    cell.textLabel.text = coffeeBeans.region;
    cell.detailTextLabel.text = coffeeBeans.variety;

    return cell;  
}

退出该功能后,程序崩溃并显示错误: 线程1:EXC_BAD_ACCESS(代码= 2,地址= 0 * 879fc0)。

libobjc.A.dylib`objc_release:
0xf90dd0:  pushl  %ebp
0xf90dd1:  movl   %esp, %ebp
0xf90dd3:  subl   $8, %esp
0xf90dd6:  calll  0xf90ddb                  ; objc_release + 11
0xf90ddb:  popl   %ecx
0xf90ddc:  movl   8(%ebp), %eax
0xf90ddf:  testl  %eax, %eax
0xf90de1:  je     0xf90e00                  ; objc_release + 48
0xf90de3:  movl   (%eax), %edx
0xf90de5:  movl   16(%edx), %edx
0xf90de8:  testb  $4, 2(%edx)               <error message is here>
0xf90dec:  je     0xf90e05                  ; objc_release + 53
0xf90dee:  movl   775957(%ecx), %ecx
0xf90df4:  movl   %ecx, 4(%esp)
0xf90df8:  movl   %eax, (%esp)
0xf90dfb:  calll  0xf9008c                  ; objc_msgSend
0xf90e00:  addl   $8, %esp
0xf90e03:  popl   %ebp
0xf90e04:  ret    
0xf90e05:  addl   $8, %esp
0xf90e08:  popl   %ebp
0xf90e09:  jmp    0

在l-h列中,它突出显示了线程1下的“0 objc_release”。

任何人都可以帮我解决这个错误吗?感谢。

1 个答案:

答案 0 :(得分:0)

试试这个。同时调试整个代码并使NSZombieEnabled为YES以便知道错误:

    CoffeeBeans *coffeeBeans = (CoffeeBeans *)[self.theCoffees objectAtIndex:rowCount];
    if(coffeeBeans)
    {
      if(coffeeBeans.region)
         cell.textLabel.text = coffeeBeans.region;

      if(coffeeBeans.variety)
         cell.detailTextLabel.text = coffeeBeans.variety;
    }