优雅的iOS技术博客iOS

iOS系统框架

2016-03-14  本文已影响542人  消费后生产

一、整体预览

低层次框架提供iOS的基本服务和技术,高层次框架建立在低层次框架之上用来提供更加复杂的服务和技术,较高级的框架向较低级的结构提供面向对象的抽象。

二、分层详解

1.触摸UI层

2.媒体层

3.核心服务层

4.核心OS层

三、最重要的两个框架(Foundation与UIKit)

Foundation和UIKit框架是应用编程用到的两个主要的框架,能够满足大多数应用程序的开发需求。

1.Foundation框架

Foundation框架为所有应用程序提供基本的系统服务。应用程序以及UIKit和其他框架,都是建立在Foundation框架的基础结构之上。Foundation框架提供许多基本的对象类和数据类型,使其成为应用程序开发的基础。

类结构:

图中灰色的是iOS不支持的,灰色部分是OS X系统的。

将上图Foundation框架中的类进行逻辑分类如下:

值对象

集合

操作系统服务 包括下面三个:文件系统和URL进程间通讯。这个范畴中的大部分类代表不同的系统端口、套接字、和名字服务器,对实现底层的IPC很有用。NSPipe代表一个BSD管道,即一种进程间的单向通讯通道。线程和子任务。NSThread类使您可以创建多线程的程序,而各种锁(lock)类则为彼此竞争的线程在访问进程资源时提供各种控制机制。通过NSTask,您的程序可以分出      一个子进程来执行其它工作或进行进度监控。

通知

归档和序列化

表达式和条件判断

Objective-C语言服务

2.UIKit框架

UIKit框架提供的类,用于创建基于触摸的用户界面。所有iOS应用程序都是基于UIKit,没有这个框架,就无法交付应用程序。UIKit提供应用程序的基础架构,用于在屏幕上绘图、处理事件,以及创建通用用户界面及其中元素。UIKit还通过管理屏幕上显示的内容,来组织应用程序。

框架类组织架构图:

在图中可以看出,responder 类是图中最大分支的根类,UIResponder为处理响应事件和响应链 定义了界面和默认行为。当用户用手指滚动列表或者在虚拟键盘上输入时,UIKit就生成时间传送给UIResponder响应链,直到链中有对象处理这个 事件。相应的核心对象,比如:UIApplication  ,UIWindow,UIView都直接或间接的从UIResponder继承。

四、关键框架详解

1.Quartz Core

QuartzCore 框架(QuartzCore.framework)包含Core Animation接口。Core Animation是一个先进的复合技术,使用它能容易创建快和有效的view-based的动画。复合引擎利用底层硬件来有效的实时操作视图内容。只需规定动画的起始点,CoreAnimation做剩下的工作。因为Core Animation内嵌在UIView架构的底层,因此它总是可用的。

2.Core Graphics

CoreGraphics.framework包含Quartz 2D绘制api。Quartz是一个原先用在OS X的先进的、向量绘制引擎。Quartz支持路径绘制,抗锯齿呈现,剃度,图像,颜色,坐标空间转换以及pdf 内容创建、显示和分析等功能。虽然这个api是C-based接口,但它使用了面向对象抽象来表现基本的绘制对象,因此使它容易存储和重用图形内容。

3.AVFoundation

AVFoundation提供先进的视频播放和记录能力。在需要对视频呈现和记录有更多的控制时使用该框架,例如在实时应用中分层显示实时视频和应用提供的其它内容。

4.CoreVideo

CoreVideo 框架 (CoreVideo.framework)为Core Media框架提供缓冲和缓冲池支持。多数应用从不直接使用该框架。

5.CoreText

CoreText 框架 (CoreText.framework)提供一个对文本进行布局和字体处理的简单的、高性能的C-based接口。该框架用在不使用TextKit但仍想获得在字处理应用中发现的先进文本处理能力。该框架提供了一个智能的文本布局引擎,包括在其它内容周围环绕文本的能力,它也支持使用多种字体和呈现属性的先进的文本风格。

6.CoreAudio

Core Audio是一组简单和智能的接口来记录和播放声音以及MIDI内容。在需要对声音有更好控制时使用该框架。

7.OpenGLES

OpenGLES 框架 (OpenGLES.framework)提供绘制2d和3d内容的工具, 它是一个C-based的框架。该框架以最接近设备硬件的方式为全屏沉浸式应用例如游戏提供细粒度的图形控制和高的帧率。你能够与EAGL配合使用这个框架,为OpenGL ES 绘制调用和UIKit的本地窗口对象之间提供接口。该框架支持OpenGLES 1.1, 2.0, 3.0规范。2.0规范增加了片段和顶点着色的支持,3.0规范增加了更多的功能,包括多个呈现目标和变换反馈。

8.Foundation

Foundation框架 (Foundation.framework)提供Core Foundation框架提供的许多功能的Objective-C封装。该框架提供如下功能的支持:

集合数据类型(数组、集合等等)

应用打包Bundles

字符串管理

日期和时间管理

原始数据块管理

Preferences管理

URL和流操作

线程和运行环

Bonjour

通讯端口管理

国际化

规则表达式匹配

Cache支持

9.CoreData

CoreData 框架 (CoreData.framework)框架是管理MVC应用中的数据模式的一种技术。CoreData框架打算在数据模式是高结构化的应用中使用。代替编程定义数据结构,在xcode中能够使用图形工具来建立一个表现你的数据模式的纲要。在运行时,你的数据模式实体的实例通过CoreData框架被创建、管理和获得。通过为你的应用管理其数据模式,CoreData大大减少了必须书写的代码量。CoreData也提供如下功能:

为优化性能在SQLite数据库中存储对象数据

一个管理数据表视图结果的NSFetchedResultsController类

对基本的文本编辑之外的undo/redo的管理

支持属性值的校验

支持传播改变确保对象之间的关系保持一致性

支持分组、过滤和在内存中优化数据。

如果你开始开发一个新应用或计划对已有应用进行大的更新,应该考虑使用CoreData。

10.CoreFoundation

CoreFoundation 框架 (CoreFoundation.framework)是一组C-based接口,为iOS应用提供基本的数据管理和服务功能。该框架包括如下支持:

集合数据类型(数组、集合等等);

应用打包Bundles

字符串管理

日期和时间管理

原始数据块管理

Preferences管理

URL和流操作

线程

11.SystemConfiguration

SystemConfiguration 框架(SystemConfiguration.framework)提供可达性接口,你能用它来确定设备的网络配置,也能使用该框架确定一个Wi-Fi或蜂窝连接是否在用以及一个特定的主机服务器是否能够存取

12.CoreMedia

CoreMedia框架为操作媒体定义低级别的数据类型和接口。当你需要对视频内容有无比的控制时可以使用该框架

上一篇下一篇

猜你喜欢

热点阅读