热插拔持久存储文件

时间:2013-05-27 17:38:23

标签: iphone core-data

我希望在应用运行时替换支持我的托管对象的文件。我的问题类似于this question,但我还有一些额外的挑战。我想在同一个地方替换文件,即完全相同的路径和文件名。

该问题的答案建议重建整个持久性堆栈。我同意这一点。但是,我对时机并不十分自信。作为一个额外的复杂功能,我可能有其他线程试图访问托管对象。我知道,不应该这样做。哎呀。我发现这太晚了,现在它已经在我的应用程序架构中根深蒂固了,所以不建议改变它。我通常依靠锁定来保证它的安全,但在这种情况下它有点棘手。

所以,我认为需要做这些事情,不一定按此顺序:

  • 锁定旧的持久性商店
  • 将新文件复制到我用于持久存储的路径
  • 创建新的持久性堆栈
  • 释放旧的持久性存储以及与之关联的任何托管对象
  • 解锁旧的持久性商店

有关最安全的订单执行这些操作的想法,或者是否有必要(或需要额外的步骤)?仅供参考我正在使用二进制存储类型,但我希望代码足够强大,以便在我决定更改的情况下它应该适用于任何商店类型。

0 个答案:

没有答案