0

刚刚将一个项目转换为 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;
    }

}

4

3 回答 3

0

如果您在.h文件delegate中声明。您是否在.m文件中至少初始化了一次(最好)使用strongself.delegateviewDidLoad

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

于 2012-09-05T16:24:07.737 回答
0

代表应该是weakor assign( __weak/ __unsafe_unretainedfor ivars) 以避免任何保留周期。

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

于 2012-09-06T07:29:37.140 回答
0

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

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

在这个线程中解决了当将项目转换为使用 ARC 时,“switch case is in protected scope”是什么意思?

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

于 2012-09-15T01:20:10.973 回答