pList或硬编码对象?

时间:2011-09-19 14:25:50

标签: objective-c plist

在我的应用程序中,我需要类 Person 的对象的简短列表。每个 Person 都有一些属性,如 name firstName age 等。 到目前为止,所有对象都在Objective-C中进行了硬编码,并添加到了NSMutableArray中。 这种方法非常适合我的需求,因为我不需要在运行时添加任何其他对象。

不知怎的,我有了使用plist而不是硬编码对象的想法可能是一个更好的主意,所以我从我的数组创建了一个plist。 我觉得plist文件并不是很小,现在我想知道使用硬编码对象是否更好。

我不需要任何核心数据(我猜)因为我需要的是一个永远不会改变且不应被用户修改的对象列表。

3 个答案:

答案 0 :(得分:1)

使用plist文件的好处如下:

  • 您可以在项目中使用多个plist,并可以轻松地按代码切换到要加载的plist。例如,在测试具有多个数据池的应用程序时,或者例如每个本地化有一个plist(一个用于英语,一个用于西班牙语,一个用于中文等等),这是有用的。
  • 您可以加载/卸载数据,因此它们不会卡在内存中
  • 您可以保存plist文件,因任何原因修改它并恢复它,而不会丢失您修改过的“真实”应用程序代码。

但是......如果您的硬编码非常干净,静态数据存储在自定义类中,带有访问器等等......所有这些都将适用于您的自定义类(它可以保存为自定义类)文件,加载到内存然后释放,本地化,...),所以plist文件将没有任何明显的好处。

答案 1 :(得分:0)

我自己也遇到过类似的情况,最后还是和那个人一起去了。从我的应用启动中获取了许多重复代码(这对我来说是最大的好处),并且以后更容易添加或更改项目。我会感到惊讶的是,如果逐字节,在plist中对代码执行它需要更多的“字符”(显然编译时代码较小,但我们在谈论什么,几千字节?)。

答案 2 :(得分:0)

属性列表也是对象图,但这些对象是通用容器,而不是项目域的模型。因此,它们不会更小或更容易使用。磁盘中plist的大小并不重要,因为你只需要反序列化一次,这几乎是应用程序生命周期的0%,并且它也可以忽略不计,因为你没有处理大量数据。

如果您尝试使用plist来获得更大的灵活性(可能用于单元测试),您可以实现NSCoding,并将归档/取消归档到二进制plist。