在Mac OS X中一个经常看到的文件是Property List(plist)文件。这些文件是Core Foundation框架使用的结构化数据在硬盘上存储的形式。在plist被读入内存后会被转换成Core Foundation框架的原生数据类型。这些类型有CFArray,CFBoolean,CFData,CFDate,CFDictionary,CFNumber和CFString。这些类型在Mac OS X的不同子系统都是portable的。例如在I/O Kit中这些CF类型都有对应的I/O Kit类型。
由于plist本质上是CF数据结构的序列化,它可以是二进制存储或者是使用XML存储。在Mac OS X中bundle和应用是plist使用最多的地方。Bundle使用一种名叫information plist的plist类型存储重要的属性。这类plist通常被称作Info.plist。例如一个应用包含的Info.list会存储以下属性
- 应用处理的文档类型
- 应用的可执行文件名称
- 应用的图标位置
- 应用的UUID
- 应用的版本
除了Info.plist以外应用可以自定义新的plist用于存储用户数据。例如Safari会把书签存入Bookmarks.plist文件。在~/Library/Preferences/目录下可以找到很多类似的plist类型的配置文件。通常这些plist命名方法是倒过来的DNS名称,例如Safari的配置名是com.apple.Safari.plist。
在Mac OS X中有很多工具可以创建或修改plist。例如plutil命令行工具可以转换plist的类型或者检查plist语法错误。XML类型的plist文件可以直接用文本编辑器编辑,但更方便的是使用Property List Editor图形编辑器。Cocoa和Core Foundation框架也都提供API可以让程序修改plist文件。这些框架里有多个标准对象类型也都是以plist存储的。