您的位置:首页 > 运维架构 > 网站架构

Mac OSX & iOS 操作系统学习笔记02——OSX和iOS的架构

2014-06-14 17:54 330 查看
1.OSX和iOS有着优雅的分层:

a).用户体验层:包括Aqua、Dashboard、Spotlight、和辅助功能等。

b).应用框架层:包括Cocoa、Carbon、和java。(iOS中是cocoa Touch)

c).核心框架层:又称为图形和媒体层,包括核心框架、OpenGL和QuickTime。

d).Darwin:操作系统核心——包括内核和UNIX shell环境。

2.Darwin并不是一单层组件,具体如下图所示。



3.用户体验层

1)QuickLook:允许在Finder中快速预览多种不同类型的文件。是以插件形式实现的。

2)Spotlight:是一项快速搜索技术。其背后的核心力量是一个索引服务器mds.它是一个没有GUI的后台服务程序,每当有任何文件操作发生时,内核都会通知这个后台服务程序。

4.Darwin(UNIX核心):OSX 中的Darwin是一个完全成熟的UNIX实现。

5.UNIX的目录结构:

/bin

UNIX中的二进制程序。常用UNIX命令等在此。
/sbin
系统程序。用于系统管理的程序,如文件系统管理和网络配置等。
/usr
User目录。类似于window的program
files,第三方软件可以装到此处。
/etc
其他文件。包含了大部分系统配置文件,OSX中此目录实际上是指向/private/etc符号链接
/dev
BSD设备文件。这些特殊文件表示系统中存在的设备(字符设备和块设备)。
/tmp
临时目录。这是系统中唯一所有人都可写的目录。OSX中此目录实际上是指向/private/tmp符号链接
/var
各种杂项。此目录保存了日志文件、邮件存储等。OSX中此目录实际上是指向/private/var符号链接
6.除了上面的文件目录,OSX还有自己特有的文件目录。

/Applications
系统中所有应用程序的默认目录
/Developer
好像现在没看到了,知道的给我说下哈
/Library
系统应用的暑假文件、帮助文档等数据都在此
/Network
用于邻居借点发现和访问的虚拟目录
/System
系统文件目录。仅包含了/Library目录,这个目录几乎包含了系统中的所有重要组件,框架、内核和字体等
/Users
所有用户的主目录所在的目录,每个用户都会在此建立一个目录
/Volumes
可移动媒体和网络文件系统的挂载点所在目录
/Cores
如果启动了核心转储,那么这个目录保存核心转储文件
7.bundle:bundle是OSX的一个重要概念,是neXTSTEP的遗产。bundle的概念不仅是应用程序的根基也是框架、插件、小物件、甚至内核扩展的根基。apple对bundle的定义是:“一种标准化的层次结构,保存了可执行代码以及代码所需的资源”,尽管具体的bundle类型和内容可能会不同,但所有的bundle都有着相同的内部结构。一个程序的bundle结构如下:



Cocoa提供了一种简单的编程方法用于访问和加载bundle,通过NSBundle对象和CoreFoundation提供的CFBundle系列API可以访问和加载bundle。
8.在应用中有一个属性列表文件info.plist,位于应用程序的contents目录下,保存的是bundle的元数据信息。此外还有3种熟悉列表的形式:xml、二进制格式、json。实际上,Cocoa可以通过内建的字典或数组对象直接实例化一个plist,而不需要指定文件格式。如下:

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfURL:plistURL];
NSArray *array = [NSArray arrayWithContentsOfURL:plistURL];

9.一个标准的info.plist包含的条目

CFBundleDisplayName:

显示给用户的bundle名称。
CFBundleDocumentTypes:
这个bundle关联的文档类型。这是一个字典,字典中的值指定了这个bundle能够处理的文件扩展名。这个字典还指定了对于关联文档显示的图标。
CFBundleExecutable:
这个bundle中实际的可执行文件(二进制文件或库文件)。可执行文件位于Contents/MacOS目录。
CFBundleIconFile:
在Finder视图中显示的图标文件。
CFBundleIdentifier:
逆DNS表示法的标识符。
CFBundleName:
bundle的名称(限制在16个字符之内)。
CFBundlePackageType:
表示一个4字母的代码,例如APPL
= Application,FRMW
= Framework,BNDL
= Bundle。
CFBundleSignature:
bundle的4字母短名。
CFBundleURLTypes
:这个bundle关联的URL。这是一个字典,值指定了这个bundle处理的URL
scheme以及处理方式。
10.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: