滚动 UITableView 时出现错误的 EXC_BAD_ACCESS
Posted
技术标签:
【中文标题】滚动 UITableView 时出现错误的 EXC_BAD_ACCESS【英文标题】:Bad EXC_BAD_ACCESS when scrolling through UITableView 【发布时间】:2012-05-26 09:36:13 【问题描述】:我使用以下代码启动了一个 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 并且软件标记了僵尸。不幸的是,我无法将此错误追溯到原因。
有人知道这里出了什么问题吗?
【问题讨论】:
您是否检查过重用标识符已设置并且与 xib 中的代码相同? 请粘贴您的tableview的didselect方法。 Stacktrace 说在您的代码中调用了“didSelectRowAtIndexPath:”。你能显示这个委托回调吗? 【参考方案1】:如果您将视图控制器的视图添加为另一个视图控制器视图的子视图,我猜想 ProductTableView 视图控制器正在被释放(因为添加为子视图会保留视图,但不会保留视图控制器属于)
将 ProductTableView 视图控制器添加为容器视图控制器的属性,以便保留
【讨论】:
以上是关于滚动 UITableView 时出现错误的 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章
JSON 和 Iphone 表加载,滚动时出现 EXC_BAD_ACCESS 错误
EXC_BAD_ACCESS 仅在从 UITableView 中一直向下滚动返回时