iOS WebView崩溃调试exc_bad_access

本文介绍了解决UIWebView从外部链接跳转回应用时出现的闪退问题。通过在视图消失前将delegate设为nil来避免内存释放后的引用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日在UIWebView中访问wap网页,在wap网页中需要跳转回app,在wap页面点击rrcc://userHome的时候,回到用户中心页面,在用户中心会自动更新用户信息的时候crash。


#pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSLog(@"%@", NSStringFromSelector(_cmd));
    
    //OC调用JS是基于协议拦截实现的 下面是相关操作
    NSString *absolutePath = request.URL.absoluteString;
    
    NSString *scheme = @"rrcc://";

    if ([absolutePath hasPrefix:scheme]) {
        NSString *cmd = [absolutePath substringFromIndex:scheme.length];

       if([@"userHome" isEqualToString:cmd]) {
            //或者需要改变一下设置顺序
            self.tabBarController.selectedIndex = 2;
            [self.navigationController popViewControllerAnimated:NO];
        }
    }
    
    return YES;
}

联想到昨天stackoverflow上遇到的一个WebView加载页面的WebThread的crash建议需要及时设置WebView的delegate为nil,结合http://www.cnblogs.com/16zj/p/5026776.html,猜想可能是在WebViewController的初始化代码中设置了

self.web.delegate = self;


WebViewController释放之后,这个web还没有释放,delegate还是有效,尝试在viewWillDisappear中设置delegate为nil后,不再有闪退问题:

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    //释放资源,防止闪退
    self.web.delegate = nil;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值