以下是我如何展示UIAlertView和委托clickedButtonAtIndex -
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle: @"title"
message: @"message"
delegate: self
cancelButtonTitle: @"Cancel"
otherButtonTitles: @"Continue", nil];
[alert show];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
//something
}
这段代码在没有ARC的情况下完美运行。但是使用ARC它会抛出这个错误 - 因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFType alertView:clickedButtonAtIndex:]:无法识别的选择器发送到实例0x859d790'
关于代表为何抛出此错误的任何想法?
答案 0 :(得分:13)
你的代表已经被解除了。仔细检查您的代码,以确保显示警报并将自身设置为委托的对象以某种方式被保留(即:您的应用中的某些内容具有强烈的引用)。
答案 1 :(得分:0)
如果您在最后otherButtonTitles
参数之后忘记了最后的nil,也会发生类似情况:
delegate: self
cancelButtonTitle: @"No"
otherButtonTitles: @"Yes",nil]; // don't forget the nil at the end here! (or it will crash first run)
有趣的是,它只在您第一次运行应用时崩溃。在那之后,它运行得很好。