为啥苹果使用 .plist 文件?
Posted
技术标签:
【中文标题】为啥苹果使用 .plist 文件?【英文标题】:Why does apple use .plist files?为什么苹果使用 .plist 文件? 【发布时间】:2011-11-07 19:17:54 【问题描述】:为什么苹果使用 .plist 文件?
Windows 使用 .ini 文件,可能不太灵活,但占用空间也更少,这与 JSon 占用空间比 XML 少的原因相同。
他们甚至可以使用 JSON 进行配置,它至少同样易于解析,支持他们需要的值类型(dict 等)并且占用的空间最少。
【问题讨论】:
如果磁盘空间是主要因素,他们会选择二进制。 是的,但是它们会失去很多可读性。您会希望这些文件易于手动编辑。 有二进制plist文件格式。 【参考方案1】:NeXTSTEP 中的original property list format 看起来很像 JSON,但语法略有不同。当 NeXTSTEP 成为 Mac OS X 时,该格式被您今天看到的 XML 版本所取代。新格式比旧格式有一些改进,您可以在该链接中阅读。
属性列表可以包含 JSON(和 INI 文件)不能包含的多种数据类型:指定为实数(浮点)或整数的数字、日期和 base64 编码的二进制数据。此外,直到 Mac OS X 发布之后,JSON 才成为 documented publicly。
Mac OS 10.2 及更高版本包含一种二进制 plist 格式,它比 XML 更节省空间,并且 plist 文件可以在两者之间无损转换。
【讨论】:
【参考方案2】:因为 NeXTSTEP 使用了它们,所以 Apple 也采用了它们。
Property List Wiki Page:
在 NeXTSTEP 下,属性列表被设计成人类可读且 手工编辑,序列化为 ASCII,语法有点像 编程语言。
NeXTSTEP 使用一种格式来表示属性列表,并且 随后的 GNUstep 和 Mac OS X 框架引入了不同的 格式。
虽然 Mac OS X 也可以读取 NeXTSTEP 格式,但 Apple 将其搁置一旁 支持自己的两种新格式。
在 Mac OS X 10.0 中,NeXTSTEP 格式已被弃用,并引入了一种新的 XML 格式,其中包含 Apple 定义的公共 DTD。 XML 格式支持非 ASCII 字符和存储 NSValue 对象(与 GNUstep 的 ASCII 属性列表格式,Apple 的 ASCII 属性列表格式没有 支持)。然而,由于 XML 文件不是最节省空间的 存储方式,Mac OS X 10.2 引入了一种新的格式,其中属性 列表文件存储为二进制文件。从 Mac OS X 10.4 开始, 这是首选项文件的默认格式。
【讨论】:
【参考方案3】:我相信这是 NeXTSTEP 时代遗留下来的东西之一……至于为什么他们更喜欢使用它,这可能是因为他们可以。 ;-)
【讨论】:
以上是关于为啥苹果使用 .plist 文件?的主要内容,如果未能解决你的问题,请参考以下文章
上传到苹果推送证书端口时,Apple MDM Vendor 生成的 plist 文件无效
通过苹果配置器 2 推送特定于应用程序的配置(Plist)?