执行以下步骤时,我得到一个 EXEC_BAD_ACCESS:
第 1 步:单击主菜单中的“分数”按钮: 这将删除菜单 (UIView),并加载分数 (UIView),随后启动使用值填充 UITableView 的过程。这里没有问题。
self.viewController4 = [[ScoresViewController alloc] initWithNibName:@"ScoresViewController" bundle:nil];
[window addSubview:viewController4.view];
[viewController.view removeFromSuperview];
NSLog(@"LOADING SCORES SCREEN");
第 2 步:从分数屏幕单击“菜单”按钮: 这将删除分数 (UIView),并再次加载菜单 (UIView)。这里没有问题。
self.viewController = [[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil];
[window addSubview:viewController.view];
[viewController4.view removeFromSuperview];
NSLog(@"Loading MAIN MENU");
第 3 步:再次从主菜单单击“分数”按钮: 再次,这将删除菜单 (UIView),并加载分数 (UIView),随后启动使用值填充 UITableView 的过程。有问题!
应用程序在显示乐谱屏幕 (UIView) 之前崩溃。使用调试器,我将问题追溯到单行代码:cell.text = [self->theScoresArray objectAtIndex:indexPath.row]; 出现在以下例程中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [theTable dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.text = [self->theScoresArray objectAtIndex:indexPath.row];
return cell;
}
这可能是第一次没有正确释放 indexPath 对象的问题吗?任何见解都会有所帮助。感谢您宝贵的时间。