滚动浏览UITableView时,EXC_BAD_ACCESS错误

时间:2012-05-26 09:36:13

标签: objective-c xcode uitableview exc-bad-access

我使用以下代码启动了一个UITableView:

ProductTableView *tableProd = [[ProductTableView alloc]initWithNibName:@"ProductTableView" bundle:nil];

xib文件确实存在!

由于我在单独的UIView中显示此表,我将其添加到此屏幕:

[content addSubview:tableProd.view];

我使用xcode创建标准的UITableView并设置以下功能:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return 10;
}

- (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];
   }
   cell.textLabel.text = @"test";    
   return cell;
}

该表显示在模拟器中,其中10行填充测试。但是,当我开始滚动,并且第一个单元格离开屏幕时,模拟器崩溃并出现EXC_BAD_ACCESS错误。我尝试使用Instruments来检测NSZombie并且软件使僵尸变得僵硬。不幸的是,我无法将此错误追溯到原因。 Instruments Screenshot of the Zombie

有谁知道这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

如果您将视图控制器的视图添加为另一个视图控制器视图的子视图,我猜想正在释放ProductTableView视图控制器(因为添加为子视图会保留视图,但不会保留视图控制器属于)

将ProductTableView视图控制器添加为容器视图控制器的属性,以便保留