UIImagePNGRepresentation() が時々 png_error 呼び出しを引き起こす奇妙なクラッシュが発生しています。社内のどのデバイスでもこのエラーを再現できませんでした。
以下は、HockeyApp クラッシュ ログの 1 つからのスタック トレースの例です。
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
このクラッシュ ログは、iOS 5.1 以降を実行しているデバイスでのみ確認されています。実際、iOS 6 からもクラッシュが発生しているため、このバグはまだ修正されていません。
アプリで表示できる 16,000 を超える画像をダウンロードするテスト アプリを作成しましたが、それらすべてを問題なくダウンロードしてディスクに保存することができました。この要旨へのいくつかの回答は、この問題が破損した画像によって引き起こされた可能性があることを示唆していますが、16,000 を超える画像をダウンロードし、一度も問題が発生したことがないことを考えると、これは事実ではないと思います.
私が取り組んでいる最新の仮説は、ダウンロード中のデータが何らかの形で破損しているため、破損した UIImage が作成されているというものです。ただし、破損した UIImage を作成する試みはすべて失敗しました。Apple は UIImage の堅牢なコンストラクターを作成したようで、渡したものは無効であり、コンストラクターから nil が返されます。
他の誰かが UIImagePNGRepresentation からこのようなことを経験しましたか?