iOS整體框架介紹

語言: CN / TW / HK

這是我參與11月更文挑戰的第18天,活動詳情檢視:2021最後一次更文挑戰

iOS整體框架

通常我們稱iOS的框架為cocoa框架. 話不多說,官方的整體框架圖如下:

image.png

簡單解釋一下: - Cocoa (Application) Layer(觸控層) - Media Layer (媒體層) - Core Services Layer(核心服務層) - Core OS Layer (核心系統操作層) - The Kernel and Device Drivers layer(核心和驅動層)

注:Cocoa (Application) Layer(觸控層)其實包含cocoa Touch layer(觸控層) 和Application Layer (應用層).應用層原本在觸控層上面,因為應用層是開發者自己實現,所以和觸控層合在一起.

其實每一層都包含多個子框架, 如下圖:

image.png

簡單解釋下(瞄一眼就得了):

  • 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賬戶框架,廣告框架,資料儲存框架,網路連線框架,地理位置框架,運動框架等等。這些服務中的最核心的是CoreFoundationFoundation框架,定義了所有應用使用的資料型別。CoreFoundation是基於C的一組介面,Foundation是對CoreFoundation的OC封裝

  • Core OS Layer:系統核心層包含大多數低級別接近硬體的功能,它所包含的框架常常被其它框架所使用。Accelerate框架包含數字訊號,線性代數,影象處理的介面。針對所有的iOS裝置硬體之間的差異做優化,保證寫一次程式碼在所有iOS裝置上高效執行。CoreBluetooth框架利用藍芽和外設互動,包括掃描連線藍芽裝置,儲存連線狀態,斷開連線,獲取外設的資料或者給外設傳輸資料等等。Security框架提供管理證書,公鑰和私鑰信任策略,keychain,hash認證數字簽名等等與安全相關的解決方案。

想看更詳細的可以移步:iOS總體框架介紹和詳盡說明

我們只需要知道其中重要的框架就是UIKit和Function框架.下面說說這兩個框架.

Function框架

Foundation框架為所有應用程式提供基本的系統服務。應用程式以及 UIKit和其他框架,都是建立在 Foundation 框架的基礎結構之上。 Foundation框架提供許多基本的物件類和資料型別,使其成為應用程式開發的基礎。

話不多說,我們先來看看Foundation框架,三個圖,包括了Foundation所以的類,圖中灰色的是iOS不支援的,灰色部分是OS X系統的。

image.png

image.png

image.png

這裡只需要知道絕大部分Function框架的類都繼承NSObject, 小部分繼承NSProxy

對於Foundation框架中的一些基本類的使用方法詳情參見:iOS開發系列—Objective-C之Foundation框架

UIKit框架

UIKit框架提供一系列的Class(類)來建立和管理iOS應用程式的使用者介面( UI )介面、應用程式物件、事件控制、繪圖模型、視窗、檢視和用於控制觸控式螢幕等的介面。

UIKit框架的類繼承體系圖如下圖所示:

image.png

在圖中可以看出,responder 類是圖中最大分支的根類,UIResponder為處理響應事件和響應鏈定義了介面和預設行為。當用戶用手指滾動列表或者在虛擬鍵盤上輸入時,UIKit就生成事件傳送給UIResponder響應鏈,直到鏈中有物件處理這個事件。相應的核心物件,比如:UIApplicationUIWindowUIView都直接或間接的從UIResponder繼承 。

這裡需要知道一點:UIKit框架所有的類都繼承NSObject

UIKit框架的各個類的簡單介紹戳後面的連結:UIKit框架各個類的簡要說明