當開發iPhone應用時,應儘量多地引用較高層框架(Framework)。與低層框架(Framework)相比,較高層框架爲低層結構提供了面向對象的抽象,這些抽象爲開發應用帶來了極大的方便。可是,較高層框架並無掩蓋低層框架,對於沒有被較高層框架封裝的低層框架的某些功能,開發者仍然能夠直接引用低層框架實現某些功能。sql
下面咱們從最高層Cocoa Touch層開始詳細描述iPhone OS的層次架構。
1.Cocoa Touch層
Cocoa Touch是iPhone OS架構中最重要層之一。它包括開發iPhone應用的關鍵框架,當開發iPhone應用時,開發者老是從這些框架開始,而後向下追溯到須要的較低層框架。Cocoa Touch層包括UIKit框架,基礎框架(Foundation Framework)和電話本UI框架(Address Book UI Framework)。
(1)UIKit框架
UIKit框架(UIKit.framework)包含Objective-C程序接口,提供實現圖形,事件驅動的iPhone應用的關鍵架構。iPhone OS中的每個應用採用這個框架實現以下核心功能:
應用管理;
支持圖形和窗口;
支持觸摸事件處理;
用戶接口管理;
提供用來表徵標準系統視圖和控件的對象;
支持文本和Web內容;
經過URL scheme與其餘應用的集成。
爲提供基礎性代碼創建應用,UIKit也支持一些與設備相關的特殊功能,以下所示:
加速計數據;
內建Camera;
用戶圖片庫;
設備名稱和模式信息。
(2)基礎框架(Foundation Framework)
基礎框架(Foundation.framework)支持以下功能:
Collection數據類型(包括Arrays、Sets);
Bundles;
字符串管理;
日期和時間管理;
原始數據塊管理;
首選項管理;
線程和循環;
URL和Stream處理;
Bonjour;
通訊端口管理;
國際化。
(3)電話本UI框架(Address Book UI Framework)
數據庫
電話本UI框架(AddressBookUI.framework)是一個Objective-C標準程序接口,主要用來建立新聯繫人,編輯和選擇電話本中存在的聯繫人。它簡化了在iPhone應用中顯示聯繫人信息,並確保全部應用使用相同的程序接口,保證應用在不一樣平臺的一致性。編程
2.媒體層(Media layer)
媒體層包括圖像、音頻和視頻技術,採用這些技術在手機上建立最好的多媒體體驗。更重要的是,應用這些技術開發的應用將有更好的視聽效果。利用 iPhone OS高層框架能夠快速地建立先進的圖像和動畫。媒體層包括圖像技術(Graphics Technologies,包括Quartz、Core Animation和OpenGL ES),音頻技術(Audio Technologies,包括Core Audio和OpenAL)和視頻技術(Video Technologies)。
(1)圖像技術(Graphics Technologies)
高質量圖像是全部iPhone應用的一個重要的組成部分。任什麼時候候,開發者能夠採用UIKit 框架中已有的視圖和功能以及預約義的圖像來開發iPhone應用。然而,當UIKit 框架中的視圖和功能不能知足需求時,開發者能夠應用下面描述的技術和方法來製做視圖。
① Quartz。核心圖像框架(CoreGraphics.framework)包含了Quartz 2D畫圖API,
Quartz與在Mac OS中採用的矢量圖畫引擎是同樣先進的。Quartz支持基於路徑(Path-based)畫圖、抗混淆(Anti-aliased)重載、梯度(Gradients)、圖像(Images)、顏色(Colors)、座標空間轉換(Coordinate-space Transformations)、pdf文檔建立、顯示和解析。雖然API是基於C語言的,它採用基於對象的抽象表徵基礎畫圖對象,使得圖像內容易於保存和複用。
② 核心動畫(Core Animation)。Quartz核心框架(QuartzCore.framework)包含CoreAnimation接口,Core Animation是一種高級動畫和合成技術,它用優化的重載路徑(Rendering Path)實現複雜的動畫和虛擬效果。它用一種高層的Objective-C接口配置動畫和效果,而後重載在硬件上得到較好的性能。Core Animation集成到iPhone OS 的許多部分,包括UIKit類如UIView,提供許多標準系統行爲的動畫。開發者也能利用這個框架中的Objective-C接口建立客戶化的動畫。
③ OpenGL ES。OpenGL ES框架(OpenGLES.framework)符合OpenGL ES v1.1規範,它提供了一種繪畫2D和3D內容的工具。OpenGL ES 框架是基於C語言的框架,與硬件設備緊密相關,爲全屏遊戲類應用提供高幀率(high frame rates)。
開發者老是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了應用的OpenGL ES畫圖代碼和本地窗口對象的接口。
(2)音頻技術(Audio Technologies)
iPhone OS的音頻技術爲用戶提供了豐富的音頻體驗。它包括音頻回放,高質量的錄音和觸發設備的振動功能等。
iPhone OS的音頻技術支持以下音頻格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、μ-law和Core Audio等。
① 核心音頻(Core Audio Family)。核心音頻框架家族(Core Audio family of frameworks)提供了音頻的本地支持,如表16-1所示。Core Audio是一個基於C語言的接口,並支持立體聲(Stereo Audio)。開發能採用iPhone OS 的Core Audio框架在iPhone 應用中產生、錄製、混合和播放音頻。開發者也能經過核心音頻訪問手機設備的振動功能。
② OpenAL。iPhone OS 也支持開放音頻庫(Open Audio Library, OpenAL)。OpenAL是一個跨平臺的標準,它能傳遞位置音頻(Positional Audio)。開發者能應用OpenAL在須要位置音頻輸出的遊戲或其餘應用中實現高性能、高質量的音頻。
因爲OpenAL是一個跨平臺的標準,採用OpenAL的代碼模塊能夠平滑地移植到其餘平臺。
(3)視頻技術(Video Technologies)
iPhone OS經過媒體播放框架(MediaPlayer.framework)支持全屏視頻回放。媒體播放框架支持的視頻文件格式包括.mov, .mp4,.m4v和.3gp,並應用以下壓縮標準:
① H.264 Baseline Profile Level 3.0 video,在30 f/s 的狀況下分辨率達到640×480像素。注意:不支持B frames;
② MPEG4規範的視頻部分;
安全
③ 衆多的音頻格式,包含在音頻技術的列表裏,如AAC、Apple Lossless (ALAC)、A-law、IMA/ADPCM(IMA4)、線性PCM、μ-law和Core Audio等。服務器
3.核心服務層(Core Services Layer) 核心服務層爲全部應用提供基礎系統服務,即便不直接使用這些服務,也應該瞭解內置在該系統中的技術。 (1)電話本 電話本框架(AddressBook.framework)提供了保存在手機設備中的電話本編程接口。開發者能使用該框架訪問和修改存儲在用戶聯繫人數據庫裏的記錄。例如,一個聊天程序可使用該框架得到可能的聯繫人列表,啓動聊天的進程(Process),並在視圖上顯示這些聯繫人信息等。 (2)核心基礎框架 核心基礎框架(CoreFoundation.framework)是基於C語言的接口集,提供iPhone應用的基本數據管理和服務功能。該框架支持以下功能: Collection數據類型(Arrays、 Sets等); Bundles; 字符串管理; 日期和時間管理; 原始數據塊管理; 首選項管理; URL和Stream操做; 線程和運行循環(Run Loops); 端口和Socket通訊。 核心基礎框架與基礎框架是緊密相關的,它們爲相同的基本功能提供了Objective-C接口。若是開發者混合使用Foundation Objects 和Core Foundation類型,就能充分利用存在兩個框架中的"toll-free bridging"。toll-free bridging意味着開發者能使用這兩個框架中的任何一個的核心基礎和基礎類型,例如Collection和字符串類型等。每一個框架中的類和數據類型的描述註明該對象是否支持toll-free bridged。若是是,它與哪一個對象橋接(toll-free bridged)。 (3)CFNetwork CFNetwork框架(CFNetwork.framework)是一組高性能的C語言接口集,提供網絡協議的面向對象的抽象。開發者可使用 CFNetwork框架操做協議棧,而且能夠訪問低層的結構如BSD Sockets等。同時,開發者也能簡化與FTP和HTTP服務器的通訊,或解析DNS等任務。使用CFNetwork框架實現的任務以下所示: BSD Sockets; 利用SSL或TLS建立加密鏈接; 解析DNS Hosts; 解析HTTP協議,鑑別HTTP和HTTPS服務器; 在FTP服務器工做; 發佈、解析和瀏覽Bonjour服務。 (4)核心位置框架(Core Location Framework) 核心位置框架(CoreLocation.framework)主要得到手機設備當前的經緯度,核心位置框架利用附近的GPS、蜂窩基站或Wi- Fi信號信息測量用戶的當前位置。iPhone地圖應用使用這個功能在地圖上顯示用戶的當前位置。開發者能融合這個技術到本身的應用中,給用戶提供一些位置信息服務。例如能夠提供一個服務:基於用戶的當前位置,查找附近的餐館、商店或設備等。 (5)安全框架(Security Framework) iPhone OS除了內置的安全特性外,還提供了外部安全框架(Security.framework),從而確保應用數據的安全性。該框架提供了管理證書、公鑰/私鑰對和信任策略等的接口。它支持產生加密安全的僞隨機數,也支持保存在密鑰鏈的證書和密鑰。對於用戶敏感的數據,它是安全的知識庫(Secure Repository)。 CommonCrypto接口也支持對稱加密、HMAC和數據摘要。在iPhone OS裏沒有OpenSSL庫,可是數據摘要提供的功能在本質上與OpenSSL庫提供的功能是一致的。 (6)SQLite iPhone應用中能夠嵌入一個小型SQL數據庫SQLite,而不須要在遠端運行另外一個數據庫服務器。開發者能夠建立本地數據庫文件,並管理這些文件中的表格和記錄。數據庫SQLite爲通用的目的而設計,但仍能夠優化爲快速訪問數據庫記錄。訪問數據庫SQLite的頭文件位於<iPhoneSDK>/usr/include/sqlite3.h,其中<iPhoneSDK>是SDK安裝的目標路徑。 (7)支持XML 基礎框架提供NSXMLParser類,解析XML文檔元素。libXML2庫提供操做XML內容的功能,這個開放源代碼的庫能夠快速解析和編輯 XML數據,而且轉換XML內容到HTML。訪問libXML2庫的頭文件位於目錄<iPhoneSDK>/usr/include /libxml2/,其中<iPhoneSDK>是SDK安裝的目標目錄。
4.核心OS層(Core OS Layer)
核心OS層包含操做系統的內核環境、驅動和基本接口。內核基於Mac操做系統,負責操做系統的各個方面。它管理虛擬內存系統、線程、文件系統、網絡和內部通訊。核心OS層的驅動也提供了硬件和系統框架之間的接口。然而,因爲安全的考慮,只有有限的系統框架類能訪問內核和驅動。 iPhone OS提供了許多訪問操做系統低層功能的接口集,iPhone 應用經過LibSystem庫來訪問這些功能,這些接口集以下所示: 線程(POSIX線程); 網絡(BSD sockets); 文件系統訪問; 標準I/O; Bonjour和DNS服務; 區域語言相關信息(Locale Information); 內存分配; 數學計算。 許多Core OS技術的頭文件位於目錄<iPhoneSDK>/usr/include/,iPhoneSDK是SDK的安裝目錄。 |