美文网首页
iOS UIImagePNGRepresentation崩溃

iOS UIImagePNGRepresentation崩溃

作者: 某非著名程序员 | 来源:发表于2019-07-27 13:06 被阅读0次

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


伪代码

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

相关文章

网友评论

      本文标题:iOS UIImagePNGRepresentation崩溃

      本文链接:https://www.haomeiwen.com/subject/mschrctx.html