iOS UIImagePNGRepresentation崩溃

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

问题:UIImagePNGRepresentation把png图片写入沙盒中,在某些机型上出现 get CFData Bytes At Offset直接崩溃。
本地的逻辑:下载完一个zip包,解压完后对其中某些图片进行裁剪再写入磁盘,通知软件应用zip包里的图片资源。
分析:下载是在子线程中完成。裁剪图片和写入磁盘及读取图片是在主线程操作的。同一个线程,解压完再写入图片,然后应用,这是没有问题的。而按崩溃的原因是写入图片时的大小和获取时的大小不一致,导致越界导致的。最有可能的原因就是,裁剪完后写入图片,但此时又在读取取图片了,线程不安全导致崩溃。
下面是修改逻辑的伪代码:在子线程裁剪完后写入磁盘后,再去通知应用。

iOS UIImagePNGRepresentation崩溃
伪代码

这没有从根本上解决问题,如果图片正在裁剪图片然后写入操作时,用户操作了界面使得程序出现了读取操作,就会出现标题中的崩溃。这个时候,我们应该对图片资源的读写,做一个线程安全的逻辑。避免这种偶现问题的发生。
总结:机型适配的问题,逻辑上是没有错误的。只能说iPhone在某些系统的处理逻辑有点问题,而我们要做的是从根源上解决这个问题来适配所有机型。

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS UIImagePNGRepresentation崩溃》 发布于2019-11-04

分享到:
赞(0) 打赏

评论 抢沙发

5 + 6 =


iOS UIImagePNGRepresentation崩溃

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?