iPhone OS有著絢麗優雅的外觀,同時也有著穩定安全的性能。iPhone OS的圖形系統采用OpenGL ES作為底層驅動,同時支持硬件加速。iPhone OS的體系結構大致可分為以下4層:
Cocoa Touch(可輕觸層)
Media(媒體層)
Core Service(核心服務層)
Core OS(核心操作系統層)
圖1-7所示為iPhone OS的體系結構圖。

1、Core OS
Core OS提供了最底層的功能,iPhone OS的許多技術都是基于Core OS的。在應用程序里面開發者雖然不會直接用到Core OS提供的功能,但是所引用的其他庫很有可能會用到Core OS提供的功能,或者依賴于Core OS。另外,當開發者在處理安全問題或者與硬件進行溝通的時候,會直接用到Core OS提供的功能。圖1-8是Core OS的組成模塊圖。

(1)Accelerate Framework:包含了數學計算、大號碼以及數字信號處理等一系列接口。使用這個庫的好處在于,開發者可以對其進行重寫,用以優化基于iPhone OS的不同設備的硬件特征,并且只需要寫一次就可以確保它在全部的設備上有效運行。
(2)External Accessory Framework:負責iPhone OS設備與各種附屬設備的溝通。iPhone OS設備可以通過自帶的數據線、WIFI和藍牙與附屬設備進行溝通,External Accessory Framework提供接口讓開發者可以獲取各種附屬設備的信息并且進行初始化,然后就可以放心地發送指令從而控制設備。
(3)Security Framework:用來保證應用程序數據管理的安全性。這個庫會提供一些接口讓開發者管理證書、公共密鑰、私有密鑰和信任策略。它支持安全加密隨機數生成,同時也支持密鑰的證書存儲。
(4)System層:包括內核、驅動和OS的各種UNIX底層接口。其中內核是基于Mach( 用于Mac OS X的微內核)的,它主要負責處理虛擬內存管理、線程、文件系統、網絡和進程間通信。驅動主要為各種硬件和系統庫之間提供接口,iPhone OS提供接口讓應用程序可以訪問OS的各種功能,開發者可以通過LibSystem庫來調用它們,這些接口都是基于C語言的,它們可以訪問以下功能。
線程
網絡
文件系統
標準輸入輸出
Bonjour 和DNS服務
本地信息
內存管理
數學計算
注 Bonjour也稱為零配置聯網,能自動發現IP網絡上的電腦、設備和服務。Bonjour 使用工業標準的IP協議來允許設備自動發現彼此,而不需輸入IP地址或配置DNS服務器。
Bonjour是法語中“你好”的意思,使用Bonjour的設備在網絡中自動傳播它們自己的服務信息并聆聽其他設備的服務信息,設備之間就像在打招呼,這也是命名為Bonjour的原因。Bonjour使局域網中的系統和服務即使在沒有網絡管理員的情況下也能很容易被找到。Bonjour顯示局域網內支持組播域名協議的設備和應用的名稱,采用multicast DNS來解決局域網內設備的命名沖突。
2、Core Service
Core Service由兩個部分組成:一是核心服務的一系列庫;二是基于核心服務的一些高階功能。其中核心庫如下:
(1)Address Book Framework:用于地址簿管理,開發者可以通過這個庫管理電話聯系人列表,訪問聯系人列表的數據庫,然后進行添加、刪除和編輯等其他操作。
(2)CFNetwork Framework:提供了一系列的接口,可以讓開發者更方便、快捷地進行網絡溝通。開發者無須關注過多的細節,可以花更多的精力在應用程序上面。
(3)Core Data Framework:用于管理基于MVC模式(Model模型、View視圖、Controller控制器)應用程序的數據模型,它是一個關系數據管理系統。 Core Data提供了在存儲器中保存、管理、更改以及獲取數據等基礎功能。
(4)Core Foundation Framework:是C語言庫,它為應用程序提供了各種基礎設施。
(5)Core Location Framework:提供定位的功能,這個庫可以運用GPS、3G和WIFI來偵測用戶的位置,地圖應用程序可以使用這個功能來顯示用戶在地圖上的位置。開發者可以將這個功能加入到應用程序中實現相關的功能,如開發者可以根據位置來提供附近餐館、商店以及銀行等的搜索服務。
(6)Core Media Framework:提供比較底層的媒體處理,很多應用程序很少用到這個庫。
(7)Core Telephony Framework:提供接口讓用戶可以收集到電話商的服務信息,例如,用戶可以知道自己用的是哪個電信商的服務,知道自己的設備現在是不是在打電話。
(8)Event Kit Framework:可以讓用戶在自己的設備上訪問日歷事件,用它來獲取現有的日歷事件或者添加一個新的事件,例如進行鬧鐘控制。
(9)Foundation Framework:提供的功能和Core Foundation Framework提供的功能差不多,區別在于它是Objective-C庫。
(10)Mobile Core Services Framework:為UTI(Uniform Type Identifiers,統一類型的標識符)定義了比較底層的數據類型。
(11)Quick Look Framework:可以讓用戶對文件的內容進行預覽。
(12)Store Kit Framework:為應用程序與App Store(應用程序商店)之間的通信提供服務,應用程序可以通過該庫從App Store接受那些用戶想要提供的產品信息,并顯示出來供用戶購買。當用戶需要購買某件產品時,程序調用Store kit來收集購買信息。
注:App Store是蘋果公司為iPhone和iPod Touch以及iPad創建的服務,允許用戶從App Store瀏覽和下載一些為了iPhone SDK開發的應用程序。用戶可以購買或免費試用,將該應用程序直接下載到iPhone或iPod Touch上。應用程序則包括游戲、日歷、翻譯程序、圖庫以及許多實用的軟件。
(13)System Configuration Framework:可以讓用戶決定設備的網絡配置,通過該庫來決定是否要使用WIFI連接或者是否連接某個網絡服務。
基于核心服務的高級功能如下:
Block Objects :是一個C語言構造體,開發者可以將它插入到C代碼或者Objective-C代碼中。從本質上來說,一個Block Objects就是一個封閉函數,或者說是伴隨這個函數的數據。一般來說,Block可以運用下面幾種情形:
代替代理和代理方法
代替回調函數
與分發堆棧一起實現異步工作
Grand Central Dispatch :簡稱GCD,可以大大提高工作效率。它可以根據處理器的數量調整應用程序的工作負荷,而且只會使用任務所需數量的線程,從而提高應用程序的效率。例如,在不使用GCD時,如果一個應用程序在最大負載時需要20條線程,那么即使在空載時,它也會建立20條線程,并占用相關資源。而使用GCD時則不然,GCD會釋放閑置資源,加快整個系統的響應速度。
In App Purchase :是基于Store Kit Framework實現的高級功能,通過這個功能用戶可以讓自己的應用程序很好地處理賬號、App Store與應用程序之間的關系。
Location Services :基于Core Location Framework實現的服務功能,可以讓應用程序給用戶定位,查找用戶當前位置。
SQLite(嵌入式數據庫) :可以讓開發者在應用程序里面嵌入一個輕量級的SQL數據庫,無須建立一個分開的數據庫服務器,就可以在應用程序里面創建一個Database文件,然后進行列表和記錄管理。
XML Support 可以讓開發者對XML文件進行解析。
3、Media
媒體層主要提供圖像渲染、音頻播放和視頻播放的功能。
(1)開發者可以用以下技術進行圖像渲染:
用Core Graphics進行圖像的2D渲染。
用Core Animation來提供動畫效果。
用OpenGL ES來提供對2D和3D渲染的支持,支持硬件加速。
Core Text提供了流暢的字體渲染引擎。
Image I/O 提供接口用以各種格式圖像的讀寫。
Assets Library Framework用以對用戶照片庫里的照片和視頻進行訪問。
(2)媒體層的Audio模塊提供了以下功能:
Media Player Framework可以讓用戶很容易地訪問iTunes 的最新版本庫并且支持列表播放。
注 iTunes 是供 Mac 和 PC 使用的一款免費應用程序,能管理和播放數字音樂和視頻,讓全部媒體文件保持同步。它還是用戶電腦、iPod Touch、iPhone 和 iPad 上的虛擬商店,隨時隨地滿足一切娛樂所需。
AV Foundation提供了簡單易用的接口用以管理音頻回放和記錄。
OpenAL 提供跨平臺的接口支持音頻播放。
Core Audio Frameworks提供了一系列簡單的接口,開發者可以通過這些接口進行音頻播放和記錄,也可以用它們來播放系統聲音,同時管理本地音頻文件或者音頻流的多通道緩沖和回放。
(3)媒體層的Video模塊提供了以下功能:
Media Player Framework為開發者提供了一系列簡單易用的接口,開發者可以在應用程序里面調用這些接口來進行視頻播放。
AV Foundation用以管理視頻的抓頻和回放。
Core Media提供底層的服務,供上面的功能調用。
4、Cocoa Touch
作為整個OS的最頂層,這一層是最為核心的部分,它還負責處理屏幕上的多點觸摸事件、文字的輸出、圖片網頁的顯示、相機或文件的存取以及加速感應的部分。下面是這一層所包含的庫:
(1)Address Book UI Framework:可以用來顯示Address Book數據庫中聯系人的數據。這個基于C的框架可以提供一個圖形界面來訪問用戶的聯系人信息,同時用戶也可以創建新的聯系人,刪除或者編輯已存在的聯系人。
(2)Event Kit UI Framework:基于Event Kit Framework,它主要為查看和編輯事件提供視圖控制器。
(3)Game Kit Framework:為游戲應用程序提供點對點的網絡連接和語音通信來支持對戰游戲。這個框架支持所有的應用程序,并且無須配對。
(4)iAd Framework :讓應用程序播放廣告,這樣可以為應用程序帶來額外的收入。
(5)Map Kit Framework:可以讓應用程序中嵌入地圖和Map Kit,支持Google Mobile Maps的服務和縮放功能,自定義標簽功能以及自定義位置信息等。
(6)Message UI Framework:用于編寫和整理郵件。
(7)UIKit Framework:是這一層的核心部分,它提供了關鍵的基礎設施、界面渲染以及事件驅動等。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
