gpt4 book ai didi

iphone - 如果 View 被关闭,单击 UIAlertView 会使应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 19:03:30 26 4
gpt4 key购买 nike

如果发生错误,将显示UIAlertView。但与此同时,调用 UIAlertView 的 View 已被驳回(因此被释放)。如果用户单击“确定”,应用程序就会崩溃,因为会向已发布的实例发送消息。这将导致您的应用程序崩溃:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"test" message:@"test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
alertView = nil;
[self.navigationController popViewControllerAnimated:YES];

我认为UIAlertView是一个独立的单元。但似乎并非如此。有没有办法避免应用程序崩溃(除了不关闭 View )?

最佳答案

UIAlertView 被解除时调用委托(delegate),因此在您的情况下:

delegate:self

委托(delegate)不会被保留,就像添加到数组中的对象或 subview 一样。因此,就您而言,当您调用时:

[self.navigationController popViewControllerAnimated:YES];

self 很可能被释放,当用户解除警报时,self 被调用,但已被释放,因此它不再存在。

检查这一点的一个简单方法是在 selfdealloc 中放置一条记录器语句,例如 NSLog(@"I'm gone"); 方法,如果它运行了,那么你就知道你的 self 已经不存在了,发送给它的任何消息都会导致崩溃。

关于iphone - 如果 View 被关闭,单击 UIAlertView 会使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com