0

我使用以下代码启动了 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 并且软件标记了僵尸。不幸的是,我无法将此错误追溯到原因。 仪器僵尸截图

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

4

1 回答 1

1

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

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

于 2012-05-26T09:39:36.187 回答