2012-03-21 53 views
1

我正在编写一个应用程序,用户可以从几个列表中添加和删除对象。为了在应用程序崩溃时保存它们的列表,我希望每次更改时都将它们写入磁盘。我目前的计划是创建一个观察列表的类,并在每次更改时都会收到通知,以便对它们进行存档(列表和其中的所有对象都遵循NSCoding协议)。每次更改时都保存一个列表

需要注意的是,我事先知道会有多少个列表,并且这些列表的长度预计不会超过100个项目(大多数会是10-20个)。

这是实现我想达到的最好方法吗?这应该甚至成为我担心的问题,还是仅仅在应用程序退出时才创建这些列表的纪念品是可以接受的?我还在考虑继承NSMutableArray的子​​类来创建一个只要它发生变化就自行保存的类,以便任何一个类都不必知道应该保存的所有列表。

+2

修复崩溃可能比归档列表反复更好... disk writing可能是昂贵的 – 2012-03-21 02:18:10

+0

我没有发现任何特别的事故,我知道。我只是想解释任何外部边缘情况。如果手机断电,或者用户从外面关闭应用程序(即,双击该按钮以查看最近使用的应用程序并从那里关闭应用程序)等,则该应用程序是否通过正常的清理方法? – 2012-03-21 02:53:40

+1

在这种情况下,可能应该将数据保存到'applicationWillEnterBackground:'中,因为每次按下home按钮或锁定按钮或用户切换到另一个应用程序时都会调用该数据。 – 2012-03-21 11:39:11

回答

2

首先,好的本能在这里担心用户的数据。是的,当然你应该修理你的车祸。但即便如此,您应该首先保护用户的数据。其次,你应该担心用户的电池寿命。所以你不应该经常打他们的闪存驱动器。

如果更改的数量不是很大,那么我建议创建具有-(而不是-a NSMutableArray)的“list”对象。只要有人拨打addItem:以便始终保持同步,您就可以自己写入磁盘。如果变化发生得非常快,那么制作蹦床非常容易,如果每秒钟发生变化,每秒都会节省时间,但每秒不会超过一次。“ (如果这是任何问题,请添加评论,我会发布一些代码或博客;这并不难)。

相关问题