iOS的系统架构分为四个层次,由内而外依次是:
核心操作系统层(Core OS layer)
核心服务层(Core Services layer)
媒体层(Media layer)
可触摸层(Cocoa Touch layer)
1. Core OS layer
核心操作系统层包括内存管理、文件系统、电源管理以及一些其他的操作系统任务,直接和硬件设备进行交互。
基本都是基于c语言的接口。
核心操作系统层包括Accelerate Framework、Core Bluetooth Framework、External Accessory Framework、Security Framework、System、64-Bit Support。
2. Core Services layer
核心服务层,我们可以通过它来访问iOS的一些服务。包含:Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch 、In App Purchase、Location Services、SQLite、XML Support等一些框架。
基本都是基于c语言的接口。
3. Media layer
顾名思义,媒体层可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。
它包括以下这些组件:
Core Audio、OpenGL、Audio Mixing、Audio Recording、Video Playback、JPG、PNG、TIFF、PDF、Quartz、Core Animation、OpenGL ES。
4. Cocoa Touch layer
本质上来说它负责用户在iOS设备上的触摸交互操作。
包括以下这些组件: Multi-Touch Events Core Motion Camera View Hierarchy Localization Alerts Web Views Image Picker Multi-Touch Controls.
cocoa 很多组件都有两种实现,一种是基于 C 的以 CF 开头的类(CF=Core Foundation),这是比较底层的;另一种是基于 Obj-C 的以 NS 开头的类(NS=Next Step),这种类抽象层次更高,易于使用。大部分iOS开发者都是跟Cocoa Touch layer打交道。
关键框架详解
UIKit
UIKit框架是可视类对象的基础文件,继承于NSObject。提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。
当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类。
CoreGraphics
它是iOS的核心图形库,平时使用最频繁的point,size,rect等这些图形,都定义在这个框架中,类名以CG开头的都属于CoreGraphics框架,它提供的都是C语言的函数接口,是可以在ios和mac os通用的。
QuartzCore
QuartzCore,Quartz是位于Mac OS X的Darwin核心之上的绘图层。是iOS系统的基本渲染框架,是一个OC语言框架。简单通俗的近似理解为:是一套基于CoreGraphics的OC语言封装。
主要部分有CoreAnimation、CALayer等
CoreAnimation
是QuartzCore重要部分。CoreAnimation中大量用到CoreGraphics中的类,原因是显然的,实现动画自然要用到图形库中的东西。
CoreText
CoreText是用来文字排版和处理字体的一个高级的底层技术。CoreText直接和CoreGraphics(CG)一起工作。
图文混排:简单来说,就是在富文本中插入一个空白的占位符,通过相关代理计算图片的尺寸信息,更具富文本计算出来的frame设置对应图片位置,绘制图片。
Foundation框架
所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象绝大多数是NSObject,NSObject就处在Foundation框架之中,也可理解为Foundation是对NSObject的操作框架。通常我们会将他们分为几类:
- 值对象
- 集合
- 操作系统服务:文件系统、URL、进程通讯
- 通知
- 归档和序列化
- 表达式和条件判断
- Objective-C语言服务
CoreFoundation
CoreFoundation 框架 (CoreFoundation.framework)是一组C-based接口,为iOS应用提供基本的数据管理和服务功能。该框架包括如下支持:
集合数据类型(数组、集合等等)
应用打包Bundles
字符串管理
日期和时间管理
原始数据块管理
Preferences管理
URL和流操作
线程
要点
许多系统框架都可以直接使用。其中最重要的是Foundation与CoreFoundation,这两个框架提供了构建应用程序所需要的许多核心功能。
很多常见任务都能用框架来做,例如音频与视频处理、网络通信,数据管理等。
请记住:用纯C写成的框架与ObjectiveC写成的一样重要,若想成为优秀的Objective-C开发者,应该掌握C语言的核心概念。