objective-c - NSData writeToFile 读取时未完全写入
<p><p>我正在编写一个 iPhone 应用程序,它允许您在一个 View 中浏览图像,并在另一个 View 中创建它们。</p>
<p>创建图像的 View 将使用以下代码将图像写入文档文件夹(当点击按钮关闭 View 时):</p>
<pre><code>;
</code></pre>
<p>浏览器 View 将使用以下方式加载图像:</p>
<pre><code>UIImage *image = ;
</code></pre>
<p>现在 10 次中有 9 次都能完美运行。十分之一的图像在我加载之前没有完全写入,所以它的下半部分将是黑色的。一切最终都会被写入 - 如果我在浏览器中重新加载图像,则会显示完整的图像。我认为这些东西在一个线程中总是一致的。</p>
<p>我可以做些什么来防止这种行为吗?</p>
<p>现在我正在考虑将新创建的图像传回浏览器,但这似乎是一种 hack,因为浏览器也会显示您之前创建的所有图像。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>如果您确定图像正在使用 <code>writeToFile:atomically:</code> 保存在主 (UI) 线程上,然后图像也在主线程上加载,那么它看起来像该方法在调用返回时维护其契约(Contract)以完成操作存在问题。 iOS 有时确实存在错误,也许你发现了。</p>
<p>不过,我还要指出,我看到出现类似问题的一种可能方式是,当 <a href="https://stackoverflow.com/questions/5075222/the-callback-sequence-of-viewdidappear-and-viewdiddisappear-between-two-view-con" rel="noreferrer noopener nofollow">assumptions are made about the order</a>其中 <code>viewWillAppear</code>、<code>viewDidDisappear</code> 等在离开一个 View 以显示另一个 View 时被调用。所以,我还要确保图像没有以这些方法之一保存。</p>
<p>既然你说问题显示的图像是 <em>half</em> 可见的,我猜这不是这种情况,但我将警告包含在 order-of- 中遇到类似问题的任何其他人操作。</p></p>
<p style="font-size: 20px;">关于objective-c - NSData writeToFile 读取时未完全写入,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/11134483/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/11134483/
</a>
</p>
页:
[1]