开发者必看,全面解析 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新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
songgeb8 小时前
Concurrency in Swift学习笔记-初识
ios·swift
mobsmobs13 小时前
Flutter开发环境搭建与工具链
android·flutter·ios·android studio·xcode
SY.ZHOU15 小时前
iOS上使用WebRTC推拉流的案例
ios·音视频·cocoa·webrtc
杂雾无尘17 小时前
2025 年了,是否该全面拥抱 Swift 6?
ios·swift·客户端
Digitally19 小时前
设置后轻松将 iPhone 转移到 iPhone
ios·iphone
2501_9160074720 小时前
iOS 抓包工具有哪些?2025实用指南与场景推荐
android·ios·小程序·https·uni-app·iphone·webview
ii_best21 小时前
[iOS开发工具] 【iOS14以及以下】cydia商店按键精灵iOS新版V2.X安装教程
ios
KanS121 小时前
2025真实面试试题分析-iOS客户端开发
ios·面试·职场和发展
归辞...1 天前
「iOS」——RunLoop学习
笔记·学习·ios
2501_916008891 天前
iOS WebView 加载失败与缓存刷新问题排查实战指南
android·ios·小程序·https·uni-app·iphone·webview