iOS WRNavgationBar与TZImagePickerController双排闪退的问题

在维护一个老项目时,遇到使用TZImagePickerController访问相册后,点击WRNavgationBar返回按钮导致应用崩溃的问题。通过排查发现,崩溃原因是WRNavgationBar在子线程调用popToViewController方法导致。解决方案是将popToViewController方法的调用改为主线程执行,避免堵塞并解决闪退问题。

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

前言

在日常摸鱼中接到一个老项目需要维护,发现一个需要访问相册的地方会发生闪退,项目用到了第三方TZImagePickerController,这是一个访问相册的第三方,而就在TZImagePickerController里出现了闪退的bug,bug位置在访问到相册后点击返回箭头退出访问会崩溃,尝试打断点拿到具体崩溃位置和原因,然而奇怪的是,一切非常顺利,并没有出现崩溃现象。我停止运行项目,手动启动APP,点击返回却发现会崩溃,这样我就无法确定具体崩溃原因,不能通过报错找答案,只能通过描述现象在网络世界里探寻解决方案,然而没找到与TZImagePickerController有关的崩溃问题,就在我失望的时候,它出现在我的眼里,没错!就是WRNavgationBar

WRNavgationBar

WRNavgationBar是一个自定义导航栏功能的第三方,它出现在我眼里就是因为项目里也集成了WRNavgationBarWRNavgationBar的使用贯通项目里里外外,发现“嫌疑人”,我就在网络世界里找解决方案,最后在WRNavgationBar的GitHub里找到答案,一切都是WRNavgationBar的问题,会和其他三方产生冲突的原因在于点击返回是在子线程调用的,形成堵塞崩溃,解决方案是回到主线程调用。

解决方案

在WRNavigationBar.m中找到:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item

在方法里面找到:

[selfpopToViewController:popToVC animated:YES];

将其替换成:

dispatch_async(dispatch_get_main_queue(), ^{
    [selfpopToViewController:popToVC animated:YES];
});

到此,解决!

啊... 又可以继续摸鱼啦...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值