iPhone OS有著絢麗優(yōu)雅的外觀,同時(shí)也有著穩(wěn)定安全的性能。iPhone OS的圖形系統(tǒng)采用OpenGL ES作為底層驅(qū)動(dòng),同時(shí)支持硬件加速。iPhone OS的體系結(jié)構(gòu)大致可分為以下4層:
Cocoa Touch(可輕觸層)
Media(媒體層)
Core Service(核心服務(wù)層)
Core OS(核心操作系統(tǒng)層)
圖1-7所示為iPhone OS的體系結(jié)構(gòu)圖。

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

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

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