那一天,我开始成为了一名程序员,回想起大一到大四,不断地学习,不断地积累,直到现在为止,无论接触什么样的语言,什么样的操作系统,我都可以在半天之内迅速适应并且能上手操作.
总结了一下,到现在这个程度,完全是因为自己从焊电路板,编写单片机,移植操作系统开始的.而且有一些小得项目经验吧.
刚接触IOS开发,从来没有操作过苹果电脑的我用了两个钟头的时间,基本把系统自如的操作起来,并且写出了Object-C的Hello World.再去上网查询了一下,原来IOS是以Linux为内核的操作系统,一直做linux和android的我更是容易的上手了,android也是以linux为内核的操作系统,我表示非常熟悉android的系统架构.
于是操作了一下iMac的终端,完全是Linux的命令,感觉很熟悉.但是苹果在整个系统的架构做了很多工作,跟android的架构比较了一下,苹果系统性能上会更加优越.
那么,开始简单分析一下苹果系统的整体架构:
图1
从图上可以看到苹果系统简单地可分为4层,这样看不出什么,也先不解释每一层的作用,再看一下比较详细的架构图吧.
图2
现在可以看到了一些更加详细一点的东西了,那么,就开始一层一层地剖析苹果系统.从底层到顶层一一介绍:
Core OS
Core Services
Core Services在Core OS基础上提供了更为丰富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因为它提供了一系列处理字串,排列,组合,日历,时间等等的基本功能。Foundation是属于Objective-C的API,Core Fundation是属于C的API。另外Core servieces还提供了其他的功能,比如:Security, Core Location, SQLite, 和Address Book. 其中Security是用来处理认证,密码管理,按安全性管理的; Core Location是用来处理GPS定位的;SQLLite是轻量级的数据库,而AddressBook则用来处理电话薄资料的。下面是具体介绍:
(1)Collection数据类型(Arrays、 Sets等);(2)Bundles;(3)字符串管理;(4)日期和时间管理;(5)原始数据块管理;(6)首选项管理;(7)URL和
Stream操作;(8)线程和运行循环(Run Loops);(9)端口和Socket通信。
类型,就能充分利用存在两个框架中的"toll-free bridging"。toll-free bridging意味着开发者能使用这两个框架中的任何一个的核心基础和基础类型,
例如Collection和字符串类型等。每个框架中的类和数据类型的 描述注明该对象是否支持toll-free bridged。如果是,它与哪个对象桥接(toll-free bridged)。
并且可以访问低层的结构如BSD Sockets等。同时,开发者也能简化与FTP和HTTP服务器的通信,或解析DNS等任务。使用CFNetwork框架实现的任务如下所示:
(1)BSD Sockets;(2)利用SSL或TLS创建加密连接;(3)解析DNS Hosts;解析HTTP协议,鉴别HTTP和HTTPS服务器;(4)在FTP服务器工作;(5)发布、解析和浏览Bonjour服务。
iPhone地图应用使用这个功能在地图上显示用户的当前位置。开发者能融合这个技术到自己的应用中,给用户提供一些位 置信息服务。例如可以提供一个服务:基于用户
的当前位置,查找附近的餐馆、商店或设备等。
策略等的接口。它支持产生加密安全的伪随机数,也支持保存在密钥链的证书和密钥。对于用户敏感的数据,它是安全的知识库(Secure Repository)。CommonCrypto接口
也支持对称加密、HMAC和数据摘要。在iPhone OS里没有OpenSSL库,但是数据摘要提供的功能在本质上与OpenSSL库提供的功能是一致的。
数据库SQLite为通用的目的而设计,但仍可以优化为快速访问数据库记录。访问数据库SQLite的头文件位 于<iPhoneSDK>/usr/include/sqlite3.h,其中<iPhoneSDK>
是SDK安装的目标路径。
访问libXML2库的头文件位于目录<iPhoneSDK>/usr/include /libxml2/,其中<iPhoneSDK>是SDK安装的目标目录。
Media
如同其名,Media层提供了图片,音乐,影片等多媒体功能。图像分为2D图像和3D图像, 前者由Quartz2D来支持,后者则是用OpenglES.与音乐对应的模组是Core Audio
和OpenAL, Media Player 实现了影片的播放, 而最后还提供了Core Animation来对强大动画的支持。具体介绍如下:
(1)图像技术(Graphics Technologies)
当UIKit 框架中的视图和功能不能满足需求时,开发者可以应用下面描述的技术和方法来制作视图。
(Path-based)画图、抗混淆(Anti-aliased)重载、梯度 (Gradients)、图像(Images)、颜色(Colors)、坐标空间转换(Coordinate-space Transformations)、
pdf文档创建、显示和解析。虽然API是基于C语言的,它采用基于对象的抽象表征基础画图对象,使得图像内容易于保存和复用。
(Rendering Path)实现复杂的动画和虚拟效果。它用一种高层的Objective-C接口配置动画和效果,然后重载在硬件上获得较好的性能。Core Animation集成到iPhone OS
的许多部分,包括UIKit类如UIView,提供许多标准系统行为的动画。开发者也能利用这个框架中的Objective-C接口创建客户化的动画。
备紧密相关,为全屏游戏类应用提供高帧率(high frame rates)。开发者总是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了应用的
OpenGL ES画图代码和本地窗口对象的接口。
(2)音频技术(Audio Technologies)
iPhone OS的音频技术支持如下音频格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、μ-law和Core Audio等。
开发能采用iPhone OS 的Core Audio框架在iPhone 应用中产生、录制、混合和播放音频。开发者也能通过核心音频访问手机设备的振动功能。
框架(Framework) | 服务(Service) |
CoreAudio.framework | 定义核心音频的音频数据类型 |
AudioUnit.framework | 提供音频和流媒体文件的 回放和录制,并且管理音 频文件和播放提示声音 |
AudioToolbox.framework | 提供使用内置音频单元服务, 音频处理模块 |
开发者能应用OpenAL在需要位置音频输出的游戏或其他应用中实现高性能、高质量的音频。由于OpenAL是一个跨平台的标准,采用OpenAL的代码模块可以平滑地移植到其他平台。
Cocoa Touch
文字的输出,图片,网页的显示,相机或文件的存取,以及加速感应的部分等。具体介绍如下:
(1)应用管理;(2)支持图形和窗口;(3)支持触摸事件处理;(4)用户接口管理;(5)提供用来表征标准系统视图和控件的对象;(6)支持文本和Web内容;(7)通过URL scheme与其他应用的集成。
(9)为提供基础性代码建立应用,UIKit也支持一些与设备相关的特殊功能,如下所示:(10)加速计数据;(11)内建Camera;(12)用户图片库;(13)设备名称和模式信息。