我使用以下代码启动了一个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并且软件使僵尸变得僵硬。不幸的是,我无法将此错误追溯到原因。
有谁知道这里出了什么问题?
答案 0 :(得分:1)
如果您将视图控制器的视图添加为另一个视图控制器视图的子视图,我猜想正在释放ProductTableView视图控制器(因为添加为子视图会保留视图,但不会保留视图控制器属于)
将ProductTableView视图控制器添加为容器视图控制器的属性,以便保留