iOS UIImagePNGRepresentation崩溃

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

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

人已赞赏
iOS文章

iOS CGFloat格式化

2019-11-4 9:19:23

iOS文章

iOS自定义cell代码

2019-11-4 11:01:05

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索