我的EXC_BAD_ACCESS存在问题。
我有一个加载本地HTML文件的UIWebView,当应用程序正在加载视图的内容时,我在它上面显示一个UIView作为“启动画面”。然后当加载UIWebView的内容时,我运行一个动画来淡出UIView并将其从内存中删除。
- (void) webViewDidFinishLoad:(UIWebView *)webView {
[UIView animateWithDuration:1
animations:^{
loadingView.alpha = 0.0;
}
completion:^(BOOL finished){
[loadingView removeFromSuperview];
[loadingView release];
}];
}
问题是,当我使用我的应用程序时,在完成方法中的两行上失败。完整错误:
Program received signal: “EXC_BAD_ACCESS”.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3 (8F190)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
loadingView是通过界面构建器构建的。这是heirarchy:
答案 0 :(得分:1)
看起来你要两次发布视图。
您的超级视图将保留对您的启动图像的引用。这将在您removeFromSuperview
时发布。
如果这是对splash图像的唯一引用,则下一行(即发行版)将 over -release并导致崩溃。根据您提供的代码判断,解决方案是删除显式版本。
但是,如果代码多于你所展示的代码,那么它可能会更复杂一些,但同样的想法。
答案 1 :(得分:0)
如果您之前没有保留loadingView,则可能会导致异常。
如果您不保留(例如使用保留属性),则不允许您释放视图。
但为了避免泄密,你应该仔细检查是否可以简单地删除[loadingView release]
。