一.了解 iOS 操作系统架构

本文详细介绍了iOS操作系统架构,从核心操作系统层(Core OS layer)到Cocoa Touch Layer(触摸UI层),涵盖核心服务层(Core Services layer)和媒体层(Media Layer)的功能。讨论了各个层次的关键框架,如Core Bluetooth、External Accessory、Security Framework等,以及它们在iOS应用开发中的作用,例如数据保护、蓝牙交互、安全存储等。同时,提到了如Core Data、Game Controller、Address Book UI等系统视图控制器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先看一下Mac OS 和 iOS 系统架构的对比图:


从图上可以看出Mac OS和iOS的系统架构层次只有最上面一层不同,Mac是Cocoa框架,而iOS是Cocoa Touch框架,因此Mac OS开发和iOS开发是相似的。这里我只分析iOS的系统架构,整个框架架构图如下:


     iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层)MediaLayer(媒体层)Core Services Layer(核心服务层)Core OS Layer(核心OS层)低层次框架提供IOS的基本服务和技术,高层次框架建立在低层次框架之上用来提供更加复杂的服务和技术,较高级的框架向较低级的结构提供面向对象的抽象。

一、核心操作系统层(Core OS layer):

     Core OS是用FreeBSD和Mach所改写的Darwin, 是开源、符合POSIX标准的一个Unix核心。这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供。另外,值得一题的是,这一层最具有UNIX色彩,如果你需要把 UNIX上所开发的程序移植到iPhone上,多半都会使用到Core OS的API.
     核心OS层的驱动也提供了硬件和系统框架之间的接口。然而,由于安全的考虑,只有有限的系统框架类能访问内核和驱动。


4.1  Core OS包含的框架:

1)Accelerate 加速框架

   Accelerate框架 (Accelerate.framework)包含执行数字信号处理、线性代数、图像处理计算的接口。

   使用该框架的优点是它们针对所有的ios设备上存在的硬件配置做了优化,因此你能写一次代码确保在所有设备上有效运行。

2)Core Bluetooth Framework(核心蓝牙框架)

CoreBluetooth 框架 (CoreBluetooth.framework)允许开发者与蓝牙低耗电外设(LE)交互。

使用该框架的Objective-C接口能够完成如下工作:

           1、扫描蓝牙外设,连接和断开发现的蓝牙外设;

           2、声明应用的服务,转换ios 设备成其它蓝牙设备的外设;

           3、 从IOS设备广播iBeacon信息;

     4、保存你的蓝牙连接的状态,当应用重新启动时恢复那些连接;

          5、蓝牙外设可获得性变化时获得通知。

3)External Accessory Framework(外部附件框架)

       ExternalAccessory 框架(ExternalAccessory.framework)提供与连接到IOS设备的硬件附件通讯的支持。

      附件能通过30-pin连接器或使用蓝牙无线与IOS设备进行连接。该框架给你提供了获得关于每一个可获得的附件信息和启动通讯会话的方式。然后,你可自由的使用附件支持的命令直接操作附件。

4)Generic Security Services Framework(通用安全服务框架)

      GenericSecurity Services 框架 (GSS.framework)给ios应用提供一组标准安全相关的服务。该框架的基本接口规定在IETFRFC2743 andRFC4401。除了提供标准的接口,IOS还包括一些没有在标准中规定但被许多应用需要的一些管理证书需要的额外东西。

5)Security Framework(安全框架)

      除了内建的安全功能,IOS也提供了一个明确的安全框架(Security.framework),你能用它来保证应用管理的数据的安全。

      该框架提供管理证书、公有和私有key和信任策略的接口。支持产生加密安全伪随机码。它也支持在keychain(保存敏感用户数据的安全仓库)中保存证书和加密key。

      公共加密库提供对称加密、hash认证编码(HMACs)、数字签名等额外支持,数字签名功能本质上与iOS上没有的OpenSSL库兼容。

     在你创建的多个应用之间共享keychain是可能的。共享使它容易在相同的一套应用之间更平滑的协作。例如,你能使用该功能来共享用户口令或其它元素,否则可能使每个应用都需要提示用户。

     为了在应用之间共享数据,必须为每个应用的Xcode工程配置适当的权限。

6)System

      System级包含kernel环境、驱动以及操作系统级别的unix接口。kernel本身负责操作系统的每一个方面:如虚拟内存管理、线程、文件系统、网络和互联通信。在该层的驱动也提供在可获得的硬件与系统框架之间的接口。为了安全,对kernel和驱动的存取被限制到一组有限的系统框架和应用。

    IOS提供一组存取许多操作系统低级别功能的接口。应用通过LibSystem库存取这些功能。该C based的接口提供如下功能的支持:

           1) 多任务(POSIX线程和GCD)

           2) 网络(BSDsockets)

           3) 文件系统存取

           4) 标准I/O

           5) Bonjour和DNS服务

           6)  位置信息

           7)  内存分配

           8) 数学计算

7) 64-Bit Support

      IOS原先是为32-bit架构的设备设计的。自iOS 7,开始支持在64-bit进行编译、链接和调试。所有的系统库和框架是支持64位的,意味着它们能在32-bit和64-bit应用中使用。当以64-bit运行时编译时,应用可能运行的更快,因为在64-bit模式可以获得额外的处理器资源。

      iOS使用OS X和其它64-bitUNIX系统使用的LP64模式,意味着在这些系统移植时不会碰到太头疼的事。

二、核心服务层(Core Services layer):

Core Services在Core OS基础上提供了更为丰富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因为它提供了一系列处理字串,排列,组合,日历,时间等等的基本功能。Foundation是属于Objective-C的API,Core Fundation是属于C的API。


该层也包含独立的技术来支持一些其它功能, 例如位置、iCloud、社交媒体和网络。

3.1 包含的高级功能:

     Peer-to-Peer Services(点到点服务)

         这个Multipeer Connectivity框架提供通过蓝牙进行p2p连接的能力。

         你能使用p2p连接来启动与附近设备的通讯会话。

         虽然p2p连接主要用在游戏中,你也能在其它类型的应用中使用这个功能。

    iCloud Storage(云存储)

       iCloud存储让应用把用户文档和数据写到一个中心位置,用户然后能从他们的计算机和ios 设备存取这些数据。

      使用iCloud可以使用户文档无所不在,意味着用户能从任何设备阅读或编辑那些文档,而不需要显式的同步或文件传输。存储文档到用户的iCloud账户也为用户提供了一层安全。即使用户的设备丢失,那些设备上的文档如果已经保存到iCloud就不会丢失。

      应用能以两种方式使用 iCloud存储,每一种有不同的使用意图:

      1) iCloud文档存储。

       可以使用这个功能在用户的iCloud账户存储用户文档和数据。

      2)iCloud键值存储。

      使用这个功能在应用之间共享数据。

       大多数应用使用iCloud文档存储来共享来自用户账户的文档。使用iCloud文档存储用户关心的是文档能否能够在设备之间共享以及他们是否能够从一个给定设备查看和管理那些文档。

      相對的,iCloud键值存储是应用与应用的其它实例共享小量数据(几十k字节)的方式,应用应当用它存储非紧急的应用数据,例如设置。

   Automatic Reference Counting(自动引用计数)

         AutomaticReference Counting(ARC)是一个编译级别的功能,用它来简化Objective-C对象生命周期过程的管理,以此代替用户必须记住什么时候应该保持和释放对象。

        ARC评估对象的生命周期需求和自动在编译时间插入适当的方法调用。

        ARC用来代替ios 的早期版本中存在的传统的管理内存的编程模式。

        新创建的工程自动使用ARC。XCODE也提供了移植工具帮助你转换遗留的工程来使用ARC.

Block Objects(块对象)

      BlockObjects是一个能够与你的C或Objective-C代码集成的C语言的构造块。一个blockobject本质上是一个异步功能和相关的数据。在其它语言中有时也被称做closure或lambda。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值