开发者必看,全面解析 iOS 架构,探索 iOS 背后的秘密!

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

苹果的移动设备,包括 iPhone、iPad 和 iPod,都是运行在 iOS 平台上,虽然后来 iPad 独立拆分出去成为了 iPadOS,但 iOS 和 iPadOS 的底层架构和 iOS 是相同的。

iOS 是基于 Darwin 为基础开发的。iOS 不仅可以管理硬件功能,还提供了开发 iOS 应用所需的一切技术支持。

iPhone 设备的基础软件包中包含一些常用的系统应用,例如邮件、日历、计算器、电话和浏览器等。然而,出于安全和商业原因,不可能在 Apple 以外的任何硬件上运行 iOS 和 Mac OS X,并且禁止在 Apple 以外的任何其他移动设备上使用 iOS。。

但是你有没有想过,iOS 的架构是怎样的?今天我们就来简单了解一下 iOS 的架构,如果未来你有机会研发一个新的操作系统,那么了解 iOS 的架构将对你有很大的帮助。

iOS 架构概述

iOS 架构的分层设计主要分为以下几层,可以从图中看得比较清楚:

  1. Core OS:核心操作系统层,负责管理硬件设备,提供内存管理、文件系统处理和线程等基本操作系统的功能。

  2. Core Services:核心服务层,将核心操作系统层提供的服务抽象化,提供所有应用可用的基本服务。

  3. Media:媒体层,通过 Media 层,开发者可以使用 iPhone 上的多媒体服务。

  4. Cocoa Touch:Cocoa Touch 层,提供了一个抽象层,使 iPhone 和其他 iOS 设备编程的各种库可访问。

iOS 会讲代码封装到框架(Framework)中。框架通常包括头文件、图片和所有所需的动态共享库。

多数 iOS 开发者在开始开发时倾向于选择更高级别的框架,因为它们提供了面向对象的抽象、更少的代码编写以及封装其他特性的能力。接下来让我们来探讨这些不同的抽象层次。

Core OS

作为 iOS 栈的最底层,Core OS 位于设备硬件之上。它提供了所有 iOS 功能的基础低级特性。除了基本操作系统的标准功能,如内存管理、文件系统处理和线程外,还提供了一些服务,包括低级网络和对外部配件的访问。

核心 OS 层储存了大多数其他技术的底层特性,比如。

  • Core Bluetooth Framework:与传统和低能耗蓝牙设备进行交互。

  • External Accessories Framework:与通过蓝牙或 Apple Lightning 连接的设备配件通信。

  • Accelerate Framework:进行大规模数学和图像计算,优化高性能和低能耗。

  • Security Services Framework:控制对应用及其维护数据的访问。

  • Local Authorization Framework:通过用户熟悉的生物识别或密码进行身份验证。

Core Services

Core Services 层将 Core OS 层提供的服务抽象化,提供所有应用可用的基本服务。核心服务层和其他层一样,提供了一组框架:

  • Accounts framework:允许用户直接从应用访问和管理其外部帐户,而无需输入登录信息。

  • Address Book framework:访问用户的联系信息。

  • CFNetwork framework:管理网络配置更改和网络服务访问。

  • Core Data framework:管理 MVC 应用的数据模型。

  • Core Foundation framework:提供基本数据管理和服务功能的接口。

  • Core Location framework:支持提供应用的位置信息和方向数据。

  • Core Media framework:提供音频和视频的播放、录制和处理。

  • Core Motion framework:提供设备的运动数据。

  • Core Telephony framework:提供电话网络服务。

  • EventKit framework:提供访问日历和提醒数据的功能。

  • Foundation framework:它为应用程序和框架提供了基础功能层,包括数据存储和持久化、文本处理、日期和时间计算、排序和过滤以及网络。对于 iOS 开发来说,Foundation 框架是使用最频繁的框架之一。

  • Mobile Core Services framework:该框架提供对重要操作系统功能的访问和控制。

  • Social framework:这个框架利用通用系统接口,将用户分享内容发布到支持的社交网站。

  • StoreKit:这个框架支持应用内购买以及与 App Store 的交互。

  • System Configuration framework:该框架允许应用程序访问设备上的网络配置选项,检查设备的可达性,例如 Wi-Fi 或蜂窝连接是否处于活动状态等。

Media Layer

通过 Media 层,开发者可以使用 iPhone 上的多媒体服务。主要包括系统的图形、音频和视频技术。苹果特别注重多媒体体验的反馈,尤其是音频和视频质量。所以 iOS 的底层媒体层赋予 iOS 音频、视频、图形和 AirPlay(无线传输)能力。

  • Assets Library framework:这个框架提供对用户资产的媒体库的访问。

  • AV Foundation framework:处理视听资源、管理相机设置、编辑音频并建立系统音频交互。

  • Core Audio framework:与设备的音频硬件接口。

  • Core Graphics framework:iOS 应用的本地绘图引擎,支持自定义 2D 矢量和基于图像的渲染。

  • Core Image framework:为控制视频和照片提供高级无损支持。

  • Core MIDI framework:提供与 MIDI(乐器数字接口)设备通信的 API,包括硬件键盘和合成器。

  • Core Text framework:提供了用于布局文本和处理字体的低级编程接口。

  • Core Video framework:利用基于管道的 API,支持 Metal 和 OpenGL 来处理数字视频,包括逐帧编辑。

  • Image I/O framework:这个框架提供对图像元数据的访问以及读取和写入大多数图像文件类型。

  • GLKit framework:使用硬件加速 API 管理高级 2D 和 3D 渲染。

  • Media Player framework:这个框架可以从应用程序中查找并播放歌曲、音频播客、有声读物和其他媒体。

  • OpenAL framework:这个框架提供了一种行业标准音频传输技术。

  • OpenGL ES framework:该框架通过硬件加速接口控制强大的 2D 和 3D 渲染。

  • Quartz Core framework:该框架允许用户使用幻灯片和 Core Image 滤镜查看、更改和保存照片。

Cocoa Touch

Cocoa Touch 层提供了一个抽象层,使 iPhone 和其他 iOS 设备编程的各种库可访问。Cocoa Touch 层包含了一组使用 Mac OS X Cocoa API 创建的 Objective-C 框架。

任何 iOS 应用的 UI 设计开发都是使用 Cocoa Touch 框架创建的。这一层支持通知、多任务处理、触摸特定输入、所有高级系统服务和其他重要技术。

  • Address Book UI framework:这个框架可以获取用户的联系人并将其呈现在图形界面中。

  • Event Kit UI framework:这个框架是一个用视图控制器来显示和更改事件的通用系统界面。

  • Game Kit framework:该框架允许用户通过游戏中心在线共享游戏相关数据。

  • iAd framework:广告框架。

  • Map Kit framework:地图框架。

  • Message UI framework:消息框架。

  • Twitter framework:用于创建推文以及创建 URL 来访问 Twitter 服务的用户界面。

  • WebKit framework:网页框架。

  • UI Kit framework:为 iOS 图形化、事件驱动的应用开发提供关键基础。

可以说做 iOS 开发,使用最多的就是 Foundation 和 UIKit 两个框架。

另外这一层还提供其他开发者使用的能力,例如:

  • 多任务处理。

  • 基本的应用程序管理和基础设施。

  • 用户界面管理。

  • 处理触摸事件。

  • 剪切、复制和粘贴等。

结论

综上所述,iOS 的架构设计合理,分层清晰,为开发者提供了丰富的框架和接口,使得开发 iOS 应用变得更加高效和便捷。

无论是从底层的 Core OS 到最上层的 Cocoa Touch,每一层都扮演着重要的角色,为用户提供了稳定、高效、安全的移动应用体验。深入了解 iOS 的架构,将有助于开发者更好地理解和利用 iOS 平台的强大功能,为开发出更优秀的应用奠定基础。

iOS 的成功不仅在于其设计和功能,更在于其庞大而完善的生态系统,相信随着技术的不断发展,iOS 将继续引领移动应用开发的潮流,为用户带来更多惊喜与便利。

你对 iOS 的架构有什么看法?欢迎在评论区留言讨论。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
Digitally几秒前
如何将信息从 iPhone 同步到Mac(完整步骤和示意图)
macos·ios·iphone
大猫会长6 分钟前
使用Mac自带的图像捕捉导出 iPhone 相册
ios·iphone
大熊猫侯佩9 天前
消失的它:摆脱 SwiftUI 中“嵌入视图数量不能超过 10 个”限制的秘密
swiftui·swift·apple
大熊猫侯佩9 天前
Swift 抛砖引玉:从数组访问越界想到的“可抛出错误”属性
swift·apple
大熊猫侯佩9 天前
ruby、Python 以及 Swift 语言关于 “Finally” 实现的趣谈
python·ruby·swift
二流小码农10 天前
鸿蒙开发:基于node脚本实现组件化运行
android·ios·harmonyos
依旧风轻10 天前
Domain 层完全指南(面向 iOS 开发者)
ios·domain·entity·sqi
续天续地10 天前
开箱即用的Kotlin Multiplatform 跨平台开发模板:覆盖网络/存储/UI/DI/CI工具链
ios·kotlin
minos.cpp10 天前
从厨房到代码台:用做菜思维理解iOS开发 - Swift入门篇①
ios·蓝桥杯·swift
山水域10 天前
Meta之 AMM 数据获取详解
swift