EXC_BAD_ACCESS in UIWebView(UIWebView 中的 EXC_BAD_ACCESS)
问题描述
我刚刚从 iTunes Connect 下载了我的一个 iPhone 应用程序的崩溃报告.最常见的崩溃有如下痕迹:
I just downloaded the crash reports for one of my iPhone apps from iTunes Connect. The most common crash has a trace like the following:
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xa1b1c1db
Crashed Thread:  0
Thread 0 Crashed:
0   libobjc.A.dylib                 0x3030e6f4 objc_msgSend + 16
1   UIKit                           0x30ebebee -[UIWebView webView:resource:didFinishLoadingFromDataSource:]
2   UIKit                           0x30ebe5ca -[UIWebViewWebViewDelegate webView:resource:didFinishLoadingFromDataSource:]
3   CoreFoundation                  0x32b73b5c __invoking___ + 60
4   CoreFoundation                  0x32bc67be -[NSInvocation invoke]
5   WebCore                         0x320baa86 HandleDelegateSource
6   CoreFoundation                  0x32bb8a96 CFRunLoopRunSpecific
7   CoreFoundation                  0x32bb8356 CFRunLoopRunInMode
8   GraphicsServices                0x30544cd4 GSEventRunModal
9   GraphicsServices                0x30544d80 GSEventRun
10  UIKit                           0x30d2c768 -[UIApplication _run]
11  UIKit                           0x30d2b46c UIApplicationMain
我大约 80% 确定这是 UIWebView 内部的问题,超出了我可以解决的范围.是否有人对如何缩小此问题范围以帮助确定它是操作系统和 UIWebView 的问题,还是我可以在我的代码中修复和解决的问题有任何建议?提前致谢.
I'm about 80% sure this is an issue internal to UIWebView and outside the scope of what I can address. Does anyone have any suggestions on how to narrow down this issue to help identify whether it's an issue with the OS and UIWebView, or an issue that I can fix and address in my code? Thanks in advance.
更新:有问题的 UIWebView 位于当用户点击相应导航控制器的后退按钮时释放的视图中.公认的解决方案似乎很好地解释了为什么会发生此错误.
UPDATE: The UIWebView in question is in a view that gets released when the user hits the back button of the corresponding navigation controller. The accepted solution seems to provide a good explanation for why this error is occurring.
建议解决方案之前:
- (void)dealloc {
    [webView release];
    [super dealloc];
}
建议解决方案后:
- (void)dealloc {
    webView.delegate = nil;
    [webView stopLoading];
    [webView release];
    [super dealloc];
}
推荐答案
场景是这样的:
- 用户使用 
UIWebView进入屏幕.UIViewController将self设置为委托 - 网页开始下载
 - 用户退出屏幕
3a.UIViewController被释放 UIWebView完成加载并向其委托发送我完成"消息...
- User enters screen with 
UIWebView. TheUIViewControllersetsselfas the delegate - Web page starts downloading
 - User exits screen
3a.UIViewControllergets deallocated UIWebViewfinishes loading and sends "I finished" message to its delegate...
在解除分配委托之前,您需要停止 UIWebView 加载其页面并将其委托设置为 nil.
You need to stop the UIWebView from loading its page and sets its delegate to nil before you deallocate the delegate.
这篇关于UIWebView 中的 EXC_BAD_ACCESS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:UIWebView 中的 EXC_BAD_ACCESS
				
        
 
            
        基础教程推荐
- 如何比较两个 NSDate:哪个是最近的? 2022-01-01
 - 为什么姜饼模拟器方向卡在应用程序中? 2022-01-01
 - iOS - UINavigationController 添加多个正确的项目? 2022-01-01
 - Android Volley - 如何动画图像加载? 2022-01-01
 - 如何将图像从一项活动发送到另一项活动? 2022-01-01
 - Play 商店的设备兼容性问题 2022-01-01
 - UIImage 在开始时不适合 UIScrollView 2022-01-01
 - Xcode UIView.init(frame:) 只能在主线程中使用 2022-01-01
 - navigationItem.backBarButtonItem 不工作?为什么上一个菜单仍然显示为按钮? 2022-01-01
 - SwiftUI-ScrollViewReader的ScrollTo不滚动 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				