Objective c pList还是硬编码对象?

Objective c pList还是硬编码对象?,objective-c,plist,Objective C,Plist,在我的应用程序中,我需要Person类对象的简短列表。每个人都有一些属性,比如名字、名字、年龄等等。 到目前为止,所有对象都用Objective-C硬编码并添加到NSMutableArray中。 这种方法非常适合我的需要,因为我不需要在运行时添加任何其他对象 不知何故,我有了使用plist而不是硬编码对象的想法,这可能是一个更好的主意,因此我从数组中创建了一个plist。 据我所知,plist文件并不小,现在我想知道使用硬编码对象是否是更好的方法 我不需要任何核心数据(我猜),因为我只需要一个对

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

不知何故,我有了使用plist而不是硬编码对象的想法,这可能是一个更好的主意,因此我从数组中创建了一个plist。 据我所知,plist文件并不小,现在我想知道使用硬编码对象是否是更好的方法


我不需要任何核心数据(我猜),因为我只需要一个对象列表,这些对象永远不会改变,也不应该被用户修改。

我自己也有过类似的情况,最后还是使用了plist。它从我的应用程序启动中取出了许多行重复的代码(这对我来说是最大的好处),并使以后添加或更改项目变得更加容易。我会很惊讶,如果一个字节对一个字节,在plist中使用的“字符”比在代码中使用的要多得多(显然,编译时代码更小,但我们在说什么,几KB?)

我自己也有类似的情况,最后还是跟着普利斯特走了。它从我的应用程序启动中取出了许多行重复的代码(这对我来说是最大的好处),并使以后添加或更改项目变得更加容易。我会很惊讶,如果一个字节对一个字节,在plist中使用的“字符”比在代码中使用的要多得多(显然,编译时代码更小,但我们在说什么,几KB?)

使用plist文件的好处如下:

  • 在项目中可以有许多plist,并且可以通过代码轻松切换到要加载的plist。例如,当使用多个数据池测试应用程序时,或例如为每个本地化设置一个plist(一个用于英语,一个用于西班牙语,一个用于汉语,等等),都很有用
  • 您可以加载/卸载数据,这样它们就不会卡在内存中
  • 您可以保存plist文件,出于任何原因修改它,然后恢复它,而不会丢失您所修改的“真实”应用程序代码

但是。。。如果您的硬编码是超干净的,静态数据存储在自定义类中,以及它的访问器等。。。所有这些都将应用于您的自定义类(它可以保存为invidual文件,加载到内存中,然后释放、本地化,…),因此plist文件不会有任何可见的好处。

使用plist文件的好处如下:

  • 在项目中可以有许多plist,并且可以通过代码轻松切换到要加载的plist。例如,当使用多个数据池测试应用程序时,或例如为每个本地化设置一个plist(一个用于英语,一个用于西班牙语,一个用于汉语,等等),都很有用
  • 您可以加载/卸载数据,这样它们就不会卡在内存中
  • 您可以保存plist文件,出于任何原因修改它,然后恢复它,而不会丢失您所修改的“真实”应用程序代码

但是。。。如果您的硬编码是超干净的,静态数据存储在自定义类中,以及它的访问器等。。。所有这些都将应用于您的自定义类(它可以保存为一个invidual文件,加载到内存中,然后释放、本地化,…),因此plist文件不会有任何明显的好处。

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


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

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


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

我不确定,但我想您刚刚回答了您的问题,如果不打算修改此数据,则将其保留为硬编码。我不确定,但你我认为你刚刚回答了你的问题,如果不打算修改此数据,则将其保留为硬编码。如果我的类中有所有可能选项(颜色)的对象数组,但在运行时只有一个对象处于活动状态,该怎么办。所以,整个类都在内存中,但它没有全部使用,只使用其中一个。也许最好将其留在plist中?如果我的类中有所有可能选项(颜色)的对象数组,但在运行时只有一个对象处于活动状态,该怎么办。所以,整个类都在内存中,但它没有全部使用,只使用其中一个。也许把它留在plist比较好?