刚刚将一个项目转换为ARC,我现在在解雇UIActionsheet后得到了EXEC_BAD_ACCESS,它之前正在工作,我不确定这是否与ARC相关。僵尸已经启用,但没有向我显示任何内容,我尝试了一些实例,它也没有给我任何东西。
这是在模态视图控制器中显示的,案例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;
}
}
答案 0 :(得分:0)
如果您在 .h 文件中宣布delegate
strong
。您是否已使用
self.delegate
)中初始化viewDidLoad
至少一次
self.delegate = [[UIApplication sharedApplication] delegate];
答案 1 :(得分:0)
代表应为weak
或assign
(__weak
/ __unsafe_unretained
代表ivars)以避免任何保留周期。
保留对您创建的工作表的引用。片材关闭后,您可以清除该参考。