gpt4 book ai didi

objective-c - NSData writeToFile 读取时未完全写入

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:15:09 67 4
gpt4 key购买 nike

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

创建图像的 View 将使用以下代码将图像写入文档文件夹(当点击按钮关闭 View 时):

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

浏览器 View 将使用以下方式加载图像:

UIImage *image = [UIImage imageWithContentsOfFile:path];

现在这在 10 次中有 9 次完美运行。十分之一的图像在我加载之前没有完全写入,所以它的下半部分将是黑色的。一切最终都会被写入——如果我在浏览器中重新加载图像,则会显示完整图像。我认为这些事情在单个线程中始终是一致的。

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

现在我正在考虑将新创建的图像传递回浏览器,但这似乎是一种 hack,因为浏览器也会显示您之前创建的所有图像。

最佳答案

如果您确定图像正在使用 writeToFile:atomically: 保存在主 (UI) 线程上,然后图像也在主线程上加载,那么它看起来像该方法维护其契约(Contract)以在调用返回时完成操作存在问题。 iOS 有时确实存在错误,也许您已经找到了。

但是,我也会注意到,我看到类似问题出现的一种可能方式是 assumptions are made about the order其中 viewWillAppearviewDidDisappear 等在离开一个 View 以显示另一个 View 时被调用。因此,我还要确保图像不会以其中一种方法保存。

既然你说这个问题显示的图像是 一半 可见,我猜想情况并非如此,但我包含了对其他有类似问题的人的警告 -操作。

关于objective-c - NSData writeToFile 读取时未完全写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134483/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com