从Windows的角度看Mac OS X上的软件开发( 七 )


首先,OS X跟Windows一样,内部字符串编码以Unicode为准 。但在操作系统不同的层级,使用方式并不相同 。Windows的Unicode layer很一致地使用了UTF-16作为编码,并偏好使用BOM辅助判别 。OS X的文件系统使用UTF-8,而CoreFoundation及Cocoa则用UTF-16 。如果使用Cocoa自己的serialization机制,Cocoa会正确储存和还原UTF-16的位顺序 。不过,笔者自己建议,尽可能使用UTF-8作为各种交换时的编码(相对于Windows对于UTF-8的支持不够干脆简明,Cocoa自己就提供了像stringWithUTF8String以及UTF8String两种NSString的method,方便在native string与UTF-8间的游走) 。
其次,相对于Windows使用registry来管理应用程序设定,Mac OS X使用的是一种叫做property list(文件扩展名为.plist,简称plist)的XML文件 。Plist可以直接变成CoreFoundation及Cocoa的各种容器对象,也可以将后者轻易地serialize成plist 。因此OS X上的应用程序大量使用plist作为配置文件的格式,甚至作为数据单元格式 。将设定用个别文件储存也减少了Windows集中管理registry所带来的各种弊病 。
Mac OS X并不使用COM (Component Object Model)来作为面向对象的进程间通信(IPC; interprocess communication)的机制 。因为用Cocoa写成的程序,可以透过Objective-C Distributed Object (DO)这个强大机制来达成IPC的任务 。除此之外,因为bundle架构,OS X软件要设计外挂模块架构也相当容易 。OS X有相当多支持外挂的应用程序,应归功于这种开发上的便利度 。
OS X应用程序能够利用所有OS X在UNIX环境上所提供的功能 。同时OS X一安装好就已经帮你准备好了大量的open source链接库,例如可用来制作密码密钥认证的OpenSSL、负责解压缩的libz、内嵌式数据库引擎SQLite等等 。这些都是加速开发的好帮手 。

推荐阅读