iOS 系统框架学习(1.系统框架的四个层级)

 一 整体框架

iOS的整体系统框架图如下图所示,iOS的系统架构主要由Application Layer(应用层)、Cocoa Touch Layer(触摸层)、Media Layer (媒体层)、Core Services Layer(核心服务层)、Core OS Layer (核心系统操作层)和The Kernel and Device Drivers layer(内核和驱动层)。

iOS 系统框架学习(1.系统框架的四个层级)_第1张图片

了解了系统架构,那么每一层的主要功能是什么呢?下图就是iOS8.3系统的框架架构图。(最新的系统会有新增模块)

  • Cocoa Touch Layer:触摸层提供应用基础的关键技术支持和应用的外观。如NotificationCenter的本地通知和远程推送服务,iAd广告框架,GameKit游戏工具框架,消息UI框架,图片UI框架,地图框架,连接手表框架,UIKit框架、自动适配等等
  • Media Layer:媒体层提供应用中视听方面的技术,如图形图像相关的CoreGraphics,CoreImage,GLKit,OpenGL ES,CoreText,ImageIO等等。声音技术相关的CoreAudio,OpenAL,AVFoundation,视频相关的CoreMedia,Media Player框架,音视频传输的AirPlay框架等等

  • Core Services Layer:系统服务层提供给应用所需要的基础的系统服务。如Accounts账户框架,广告框架,数据存储框架,网络连接框架,地理位置框架,运动框架等等。这些服务中的最核心的是CoreFoundation和Foundation框架,定义了所有应用使用的数据类型。CoreFoundation是基于C的一组接口,Foundation是对CoreFoundation的OC封装

  • Core OS Layer:系统核心层包含大多数低级别接近硬件的功能,它所包含的框架常常被其它框架所使用。Accelerate框架包含数字信号,线性代数,图像处理的接口。针对所有的iOS设备硬件之间的差异做优化,保证写一次代码在所有iOS设备上高效运行。CoreBluetooth框架利用蓝牙和外设交互,包括扫描连接蓝牙设备,保存连接状态,断开连接,获取外设的数据或者给外设传输数据等等。Security框架提供管理证书,公钥和私钥信任策略,keychain,hash认证数字签名等等与安全相关的解决方案。

上面的每一模块只是简单滴介绍了大致功能,更多详细信息大家可以 戳这里看大神的博客了解更多:iOS总体框架介绍和详尽说明。显然,在上面所有的框架中,最重要也最经常使用的就是UIKitFoundation框架,在本文的第二部分我们将详细介绍这两部分中的类继承体系。

 二 Cocoa框架的类继承体系

  Cocoa框架是iOS应用程序的基础,是OS X和 iOS操作系统的程序的运行环境,了解Cocoa框架,对开发iOS应用有很大的帮助。iOS中,Cocoa众多框架中最重要最基本的两个框架是:Foundation 和 UIKit。这两个框架基本包含了iOS、OS X开发过程中要用到的绝大多数OC类,因此这两个框架是Cocoa框架其中Foundation 和界面无关,也可以说和界面无关的类基本是Foundation框架的,和界面相关的是UIKit框架。

2.1 Foundation框架类继承体系

Foundation框架为所有应用程序提供基本的系统服务。应用程序以及 UIKit和其他框架,都是建立在 Foundation 框架的基础结构之上。 Foundation框架提供许多基本的对象类和数据类型,使其成为应用程序开发的基础。它还制定了一些约定(如用于取消分配等任务),使代码更加一致,可复用性更好。  

  话不多说,我们先来看看Foundation框架,三个图,包括了Foundation所以的类,图中灰色的是iOS不支持的,灰色部分是OS X系统的。 

 

iOS 系统框架学习(1.系统框架的四个层级)_第2张图片   iOS 系统框架学习(1.系统框架的四个层级)_第3张图片   

iOS 系统框架学习(1.系统框架的四个层级)_第4张图片

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

  1. 值对象
  2. 集合 
  3. 操作系统服务 包括下面三个
    • 文件系统和URL   
    • 进程间通讯。 这个范畴中的大部分类代表不同的系统端口、套接字、和名字服务器,对实现底层的IPC很有用。NSPipe代表一个BSD管道,即一种进程间的单向通讯通道。  
    • 线程和子任务。 NSThread类使您可以创建多线程的程序,而各种锁(lock)类则为彼此竞争的线程在访问进程资源时提供各种控制机制。通过NSTask,您的程序可以分出一个子进程来执行其它工作或进行进度监控。
  4. 通知
  5. 归档和序列化
  6. 表达式和条件判断
  7. Objective-C语言服务

   对于Foundation框架中的一些基本类的使用方法详情参见:iOS开发系列—Objective-C之Foundation框架

2.2 UIKit框架类继承体系

  UIKitk框架提供一系列的Class(类)来建立和管理iOS应用程序的用户界面( UI )接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。框架的入口: #import    ,当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类。(PS: 当然还要把这个框架链接到你的应用程序中)。

  • (PS1: 可以认为是操纵界面的一个API库)
  • (PS2: UIKit框架是用在iOS平台上与之对应的是MAC OS X上的Application Kit,二者是姐妹框架,作用和目的没啥太大区别(我没有说实现目的的过程也一样),表混淆了)  

  应用程序可以通过三种方式使用UIKit创建界面:

  1.   在用户界面工具(interface Buidler)从对象库里 拖拽窗口,视图或者其他的对象使用。
  2.   用代码创建
  3.   通过继承UIView类或间接继承UIView类实现自定义用户界面

  同样的, UIKitk框架的类继承体系图如下图所示:

iOS 系统框架学习(1.系统框架的四个层级)_第5张图片

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

 

参考链接:https://www.jianshu.com/p/0f2ab4b09e8b

参考链接:https://www.cnblogs.com/mukekeheart/p/8203025.html

参考链接:http://www.cnblogs.com/ygm900/p/3599081.html

你可能感兴趣的:(iOS框架,iOS框架,iOS系统)