首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS14 Beta4崩溃修改

iOS14 Beta4崩溃修改

原创
作者头像
莫空9081
修改2020-08-10 11:00:47
修改2020-08-10 11:00:47
8110
举报
文章被收录于专栏:iOS 备忘录iOS 备忘录

iOS 14 beta4崩溃修改

前言

升级iOS 14Beta4后,有用户反馈使用我们APP时会崩溃,有登录的、查看详情的,都会出现崩溃。我们查看Bugly数据也发现崩溃率上升了0.02%,直接超出了指定的崩溃指标。虽然是由于升级beta版系统导致的,但还是要排查出具体原因,然后尽快适配。所以我说一下我发现的哪个API导致的,供大家参考一下。

排查

由于崩溃是必现的,所以排查起来很容易,找一台升级了iOS14 beta4的手机,然后复现步骤,看具体崩溃的地方,即可

我们APP是由于使用了SexyJson这个库,其中SexyJsonProtocol这个类第67行中sexyToValue()的方法里使用AnyRandomAccessCollection这个地方有强制解包属性,在之前的系统版本中,这个地方返回的值不为空,所以没有问题,但是在这个版本里,这个属性返回为空了,就导致了新系统中的崩溃。

如图所示位置:

1597027469570.jpg
1597027469570.jpg

修改

由于是强制解包导致的,所以直接的修改就是,把这个地方的强制解包,改为if let的格式,修改后,运行,binggo,崩溃确实没了。但是在验证过程中,由于我们使用这个是把请求的对象转为参数字典,这个地方虽然不崩溃了,但是正常应该存在的值,也还是没有,换句话说,就是所有请求中使用这个方法转字典的,都失败了。。。。怕不怕,还好我们这个地方有报错直接抛出来了,要不然真的以为改好了就这么上线,服务端的就会骂人了,因为会发现接口错误率刚刚地。仔细分析这个地方实现后,发现其实是使用Mirror来获取类中所有属性生成字典,一步步调试会发现,其实Mirror类还是正常工作的,mirror.children也是不受影响的,but,AnyRandomAccessCollection(mirror.children)就返回空了,所有就是AnyRandomAccessCollection()这个方法在iOS14 beta4中不能正常工作了。于是再次修改

如图所示,第一次修改:

1597027634294.jpg
1597027634294.jpg

第二次修改:

1597028081543.jpg
1597028081543.jpg

最后

所以我们项目里在iOS14 beta4中的崩溃是由于SexyJson库中的强制解包导致的,但是真正的原因是iOS14 beta4中AnyRandomAccessCollection()此方法不能正常工作了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS 14 beta4崩溃修改
    • 前言
    • 排查
    • 修改
    • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档