【问题标题】:EXEC_BAD_ACCESS on a UIActionSheet with ARC带有 ARC 的 UIActionSheet 上的 EXC_BAD_ACCESS
【发布时间】:2012-09-05 15:33:42
【问题描述】:

刚刚将一个项目转换为 ARC,在我关闭 UIActionsheet 后现在得到一个 EXEC_BAD_ACCESS,它以前可以工作,我不确定这是否与 ARC 相关。 Zombies 已启用,但什么也没显示,我尝试了仪器,但它也没有给我任何东西。

这是在模态视图控制器中显示的,案例 0,退出按钮工作正常,但其他两个给我错误的访问错误。

这是我第一次转换为 ARC,我在这里遗漏了什么吗?

操作表创建:

-(IBAction)quitPressed:(id)sender {
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Quit This Game?"    delegate:self cancelButtonTitle:@"Keep Playing" destructiveButtonTitle:@"Quit" otherButtonTitles:@"Quit and Reveal Answers",nil];
    [sheet showInView:self.view];

}

行动表委托:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

    switch (buttonIndex) {
        case 0:  //quit
            [self dismissViewControllerAnimated:NO completion:^{
            [self.delegate quitGame];
        }];
        break;
        case 1:  //quit and reveal
            NSLog(@"reveal");
            break;
        case 2: //cancel
            NSLog(@"cancel"); 
            break;
        default:
        break;
    }

}

【问题讨论】:

  • 崩溃在哪一行?
  • 在委托方法中放一个断点并报告它崩溃的地方
  • switch 语句的右大括号。
  • 您的委托是strong 属性吗?
  • 亚当,你是说 UIActionSheetDelegate 吗?委托是我在其中呈现操作表的视图控制器,它没有在任何地方声明为属性。它由故事板呈现,我将不得不进一步研究。

标签: iphone objective-c xcode automatic-ref-counting exc-bad-access


【解决方案1】:

如果您的 delegate.h 文件中声明为 strong。您是否使用

.m 文件(最好是viewDidLoad)中至少初始化了一次self.delegate

self.delegate = [[UIApplication sharedApplication] delegate];

【讨论】:

    【解决方案2】:

    代表应该是 weakassign__weak / __unsafe_unretained 为 ivars)以避免任何保留循环。

    保留对您创建的工作表的引用。关闭工作表后,您可以清除该引用。

    【讨论】:

      【解决方案3】:

      感谢大家的帮助。我在 xcode 4.5 下运行项目时发现了问题。它给出了一个编译错误:switch case is protected in scope

      我在 xcode 4.3 中没有收到该错误

      已在本帖When converting a project to use ARC what does "switch case is in protected scope" mean?解决

      我将每个案例都用大括号括起来,问题已经解决。

      【讨论】:

      • 啊。 Xcode 4.3 的 ARC 还不是很成熟。如果您打算回去,这可能是您应该在以后的问题中提及的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多