读取时NSData writeToFile不完全写入

我正在写一个iPhone应用程序,允许您在一个视图中浏览图像,并在另一个视图中创build它们。

创build图像的视图将使用以下代码将图像写入文档文件夹(当点击button以closures视图时):

[UIImagePNGRepresentation(image) writeToFile:path atomically:YES]; 

浏览器视图将使用以下命令加载图像:

 UIImage *image = [UIImage imageWithContentsOfFile:path]; 

现在,这10次完美的9次。 在我加载之前,图像中有1个没有完全写入,所以下半部分会变黑。 一切都将被写入最终 – 如果我在浏览器中重新加载图像,将显示完整的图像。 我认为这些东西在一个单一的线程中总是一致的。

我可以做些什么来防止这种行为?

现在我正在考虑将新创build的图像传回给浏览器,但这只是因为浏览器显示了您之前创build的所有图像。

如果您确定图像正在使用writeToFile:atomically:保存在主(UI)线程中writeToFile:atomically:然后该图像也被加载到主线程上,那么看起来这个方法有一个问题,在通话结束时完成操作。 iOS有时会有错误,也许你find了一个。

然而,我也会注意到,当我看到类似的问题出现时,一种可能的方式是,当对一个视图显示另一个视图时, viewDidDisappear viewWillAppearviewDidDisappear等的顺序的假设 。 所以,我也要确保图像不保存在这些方法之一。

既然你说过这个问题显示的图像是一半可见的,我猜想事实并非如此,但是对于其他任何与操作顺序相似的问题,我还是要加上警告。

UI未完成的过程的标准解决scheme是将其分解成新的线程。 也许你应该创build一个单独的线程来保存图像,然后通过委托方法通知UI更新自己。