仅在iOS 5.1+上的UIImagePNGRepresentation中的png_error

Sen*_*ior 10 png image ios ios5.1 uiimagepngrepresentation

我们遇到了一个奇怪的崩溃,其中UIImagePNGRepresentation()有时会导致png_error调用.我们无法在内部任何设备上重现此错误.

以下是我们的HockeyApp崩溃日志中的堆栈跟踪示例:

Thread 0 Crashed:
0   libsystem_kernel.dylib         0x3167132c __pthread_kill + 8
1   libsystem_c.dylib              0x33d6729f abort + 94
2   ImageIO                        0x346c38bf png_error + 114
3   ImageIO                        0x346c2fe3 png_write_end + 46
4   ImageIO                        0x346bf069 writeOnePng + 2260
5   ImageIO                        0x346be78b _CGImagePluginWritePNG + 82
6   ImageIO                        0x346be6fd CGImageDestinationFinalize + 132
7   UIKit                          0x31346e23 UIImagePNGRepresentation + 274
Run Code Online (Sandbox Code Playgroud)

我们只在运行iOS 5.1及更高版本的设备上看到此崩溃日志.我们实际上已经从iOS 6崩溃了,所以这个bug还没有修复.

我编写了一个测试应用程序,可下载超过16,000个可能的图像,我们的应用程序可以显示这些图像,所有这些图像都可以下载并保存到磁盘而没有任何问题.对这个要点的一些回应暗示这个问题可能是由于图像损坏引起的,但看到我如何下载超过16,000张图片而且从未出现过问题,我认为不会出现这种情况.

我正在研究的最新假设是,以某种方式下载的数据已损坏,因此正在创建损坏的UIImage.但是,所有创建损坏的UIImage的尝试都失败了.Apple似乎为UIImage创建了一个健壮的构造函数,这样我传入的任何无效内容都会导致从构造函数返回nil.

UIImagePNGRepresentation有没有其他人经历过这样的事情?

bry*_*yle 0

您是否尝试过在不同的网络条件下进行测试?3G 或 Edge 而不仅仅是 wifi?尝试使用网络链接调节器来模拟这些缓慢且有损网络的条件。