当我的应用程序使用属性列表启动时,我需要将一小部分数据读入数组。当应用程序运行时,此数据可能会根据用户的操作而改变。当应用程序关闭时,我需要将数据写回文件。
从高层次来看,我只是想知道这样做的最佳设计模式是什么?我的第一个直觉是简单地在appDelegate
中声明一个数组,并在需要时通过appDelegate
实例访问该数组。然后最后,他applicationWillResignActive
:方法将数据写回文件。
然而,我被告知在appDelegate中声明这样的变量是个坏消息,所以我想知道是否有人可以告诉我实现这一目标的最佳方法是什么。
答案 0 :(得分:5)
这取决于你的应用程序想要对加载的数据做什么?如果需要访问项目中的任何位置,可以创建singleton pattern(例如SharedData类),获取静态实例
e.g: [SharedData sharedInstance]
首先获得此实例,您可以从属性文件中加载数据。
你应该创建一个实例方法,例如:
- (void) saveData;
并使用以下方法调用它:
- (void)applicationWillTerminate:(UIApplication *)application{
[[SharedData sharedInstance] saveData];
}
和
- (void)applicationDidEnterBackground:(UIApplication *)application{
[[SharedData sharedInstance] saveData];
}
如果要在按下主页按钮时保存。 但是,必须保存数据的确切时间取决于应用程序工作流程。最好在修改存储数据的操作之后立即保存(可能使用后台线程)。