iOS / Cocoa:UIAlertView抛出EXC_BAD_ACCESS

时间:2012-08-10 23:32:38

标签: ios cocoa

似乎是一个令人震惊的微不足道的差异。将nil的非otherButtonTitles值传递给UIAlerView会爆炸。

工作:

UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Login with your credentials"
                      message:nil
                      delegate:nil
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:nil];

不工作:

UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Login with your credentials"
                      message:nil
                      delegate:nil
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"OK"];

是什么给出了?

2 个答案:

答案 0 :(得分:4)

UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Login with your credentials"
                      message:nil
                      delegate:nil
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"OK1",@"OK2",nil];

最后一个参数是一个多参数,应该以nil终止。

答案 1 :(得分:2)

基本上,你应该改为:

UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Login with your credentials"
                      message:nil
                      delegate:nil
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"OK", nil];

它声明here“添加到接收器的附加按钮的标题,以nil终止。”

基本上,它是一个多值参数,可以获取值直到nil。它与数组和列表的工作方式相同。