ios - iPad 文件写入性能

标签 ios ipad

我们有一个 POS 公寓租赁 iPad 应用程序,用于收集有关用户及其兴趣的大量数据(当然是在他们知情的情况下)。

我们使用 RestKit 将 CoreData 与服务器同步,这非常棒。

我想做的是有一个备份系统,这样如果 Core Data 阻塞,并且我记录的堆栈跟踪不包含我需要的数据,我仍然可以以某种方式保存数据。我永远不想丢失数据。

所以我在这里所做的是将用户数据写入磁盘上的文件以及 CoreData,如果没有出错,则在 session 结束时删除该文件。如果出现问题,它会在应用程序再次启动时与堆栈跟踪一起发送到 HockeyApp。

所以我的问题之一是性能。在它影响性能之前,我可以多久写入一次这个文本文件?这个应用程序中有一堆屏幕,他们可以在输入信息时翻阅这些屏幕。他们可以很快传呼,我不希望它造成延误。这是我应该考虑的事情还是我偏离了方向?

最佳答案

最终,您必须量化写入操作的大小和复杂性。

无论如何,是什么阻止您使用 C 库,或者更具体地说,是更典型的 C 方法?以下是您经常看到的方法差异:

  • C: 对于每次更改,将一些字节附加到文件中
  • ObjC:对于每个更改(集),创建所有内容的属性列表或存档。将所述属性列表完整写入磁盘。

增量方法也可以使用较低级别的 CF/NS IO 类型。特别是:

  • NSFileHandle
  • NSOutputStream
  • CFWriteStream

这些类型能够进行同步和异步写入。

无论如何 - 如果您有大量数据要写入并在每次交易时重新格式化到属性列表,那么您应该考虑增量写入。

关于ios - iPad 文件写入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139606/

相关文章:

iPhone IB导出

ios - setStatusBarHidden 在 UIDocumentInteractionController 呈现 Preview Animated 后停止正常工作

ios - 将设备放在表面上后,是否可以确定应用程序 UI 是否处于横向?

ios - 快速改变行距留下底部空白

iphone - 三列 UITableViewCell

带有照片和图库按钮的 iOS 全局菜单

ios - 如何通过 swift 包管理器在 swift 项目中添加 Alamofire

iOS:制作具有动态高度的 UIScrollView 的最佳方式?

objective-c - 更改托管对象属性不会触发 NSFetchedResultsController 更新 TableView

iphone - IOS解析PDF和GOTOR链接的问题