0

我有这段简单的代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Contact" message:@"This contact does not exist yet" delegate:self cancelButtonTitle:@"Ok"  otherButtonTitles:@"Not now", nil];
[alert show];

如果我将委托设置为“nil”,一切都很好。但是,如果我将委托设置为“self”并添加 clickedButtonAtIndex 或 didDismissWithButtonIndex 委托,则应用程序会因 EXC_BAD_ACCESS 而崩溃

4

3 回答 3

0

问题是由于我的流量。我有一个调用 URL 的类。Viewcontroller 实际上在响应来自服务器之前很久就完成了。因此,我必须在调用者中实现一个 NSRunLoop 以等待服务器通信完成。基于被调用例程中的一些 ExitCode,我只能显示一个警报并让代理处理按下的按钮。无论如何,感谢 Chakalaka 让我走上正轨。

于 2013-02-11T16:45:20.430 回答
0

我认为您没有设置 alertView 委托方法。

首先在 .h 文件中设置 alertView 委托协议。

     @interface MainViewController : UIViewController<UIAlertViewDelegate>

然后实现这个方法,它会正常工作

  -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
 {
   switch (buttonIndex)
  {
    case 0:

        break;
    case 1:
        break;

    default:
        break;
  }
}
于 2013-02-11T08:34:06.323 回答
0

您的问题是您的对象(自我)不再存在!但是 alertview 尝试访问它,所以你得到 EXC_BAD_ACCESS。检查您的委托对象(自我)是否还活着!

于 2013-02-11T09:02:34.567 回答