• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:20:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

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

UIImage *image = [UIImage imageWithContentsOfFile:path];

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

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

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



Best Answer-推荐答案


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

不过,我还要指出,我看到出现类似问题的一种可能方式是,当 assumptions are made about the order其中 viewWillAppearviewDidDisappear 等在离开一个 View 以显示另一个 View 时被调用。所以,我还要确保图像没有以这些方法之一保存。

既然你说问题显示的图像是 half 可见的,我猜这不是这种情况,但我将警告包含在 order-of- 中遇到类似问题的任何其他人操作。

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap