Xav*_*ero 2 iphone uialertview ios
当我单击时UIAletView,我收到以下错误.
alertView:clickedButtonAtIndex:]: message sent to deallocated instance 0x84c7010
Run Code Online (Sandbox Code Playgroud)
这是我用过的代码.
UIAlertView *testAlert = [[ UIAlertView alloc]initWithTitle:messageTitle message:messageBody delegate:self cancelButtonTitle:messageClose otherButtonTitles:messageTryAgain, nil];
testAlert.tag = 2;
[testAlert show];
[testAlert release];
Run Code Online (Sandbox Code Playgroud)
我有委托方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
}
Run Code Online (Sandbox Code Playgroud)
单击时UIAlertView,即使在控件到达委托方法之前,应用程序也会崩溃.可能是什么原因.我究竟做错了什么?
这是"一个解决方案的黑客".
希望它可以帮助您了解您的委托是内存问题.删除(在这种情况下self)取消分配在testAlert被解雇之前以某种方式解除分配
// retain self to avoid crash you were experiencing earlier
UIAlertView *testAlert = [[ UIAlertView alloc]initWithTitle:messageTitle message:messageBody delegate:[self retain] cancelButtonTitle:messageClose otherButtonTitles:messageTryAgain, nil];
testAlert.tag = 2;
[testAlert show];
[testAlert release];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
// release self because you've gotten past the crash
[self release];
}
Run Code Online (Sandbox Code Playgroud)
这绝不是一个优雅的解决方案,应该鼓励您进一步调试您的应用程序,以找出为什么self过早解除分配
| 归档时间: |
|
| 查看次数: |
1982 次 |
| 最近记录: |