iOS 7是否更改了PNG兼容性/处理



我有一个使用UIWebView的应用程序,一切都在iOS 6上(现在仍然)完美运行。 但是,在iOS 7上,当我尝试加载某些PNG文件(例如这个)时,有时会ImageIO: PNG not a PNG file回一个错误。

现在,显然PNG文件没有损坏,因为它们可以在iOS 6上运行,有时甚至可以在iOS 7上运行,但有时它们会回放该错误。 我找不到任何确定错误发生时间的常见原因,并且我没有对它们做任何可能导致错误的异常操作:我的代码除了在 UIWebView 中加载页面外不会触及它们,所以这似乎是 WebView 正在内部做的事情。 当然,这使得确定它变得更加困难。

我知道这是一个奇怪的问题,有点像问"福特是否改变了车轮的工作方式",但苹果是否改变了它在iOS 7中处理PNG的方式? 谁能想到可能导致此iOS 7特定错误的原因是什么?

问题不太可能出在 PNG 本身。如果是,那么它每次都会失败。更有可能的是,您正在损坏数据,可能是由于争用条件(因为它是间歇性的)。例如,您可能正在主线程以外的其他位置执行 WebKit 调用。您可能已经在iOS 6上侥幸逃脱了,但在iOS 7上,可能已经发生了足够的变化,导致竞争条件失败。如果在UIWebView之外处理这些 PNG,则可能存在争用条件。这是我要看的两个主要地方。

事实证明,问题出在PNG文件本身上:有人在Photoshop中打开了某些文件进行编辑,而这些文件在某些情况下无法正常工作。 我不知道究竟是什么让应用程序无法接受它们,但是当我们重新导出它们时,它们运行良好。 奇怪,但解决了。

建议任何阅读本文时遇到类似问题的人:如果需要,在各种设置和条件下重新导出文件,看看它们是否开始工作。

最新更新