菜鸟教程小白 发表于 2022-12-13 14:20:07

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]
查看完整版本: objective-c - NSData writeToFile 读取时未完全写入