iPhone OS(現在叫iOS)是iPhone, iPod touch 和 iPad 裝置的作業系統.
1,Core OS:
是用FreeBSD和Mach所改寫的Darwin, 是開源、符合POSIX標準的一個Unix核心。這一層包含或者說是提供了整個iPhone OS的一些基礎功能,比如:硬體驅動, 記憶體管理,程式管理,線程管理(POSIX),檔案系統,網路(BSD Socket),以及標準輸入輸出等等,所有這些功能都會通過C語言的API來提供。另外,值得一題的是,這一層最具有UNIX色彩,如果你需要把 UNIX上所開發的程式移植到iPhone上,多半都會使用到Core OS的API.
核心OS層的驅動也提供了硬體和系統架構之間的介面。然而,由於安全的考慮,只有有限的系統架構類能訪問核心和驅動。
iPhone OS提供了許多訪問作業系統低層功能的介面集,iPhone 應用通過LibSystem庫來訪問這些功能,這些介面集如下所示:
線程(POSIX線程);
網路(BSD sockets);
檔案系統訪問;
標準I/O;
Bonjour和DNS服務;
現場資訊(Locale Information);
記憶體配置;
數學計算。
許多Core OS技術的標頭檔位於目錄<iPhoneSDK>/usr/include/,iPhoneSDK是SDK的安裝目錄。
2,Core Services:
Core Services在Core OS基礎上提供了更為豐富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因為它提供了一系列處理字串,排列,組合,日曆,時間等等的準系統。Foundation是屬於Objective-C的API,Core Fundation是屬於C的API。另外Core servieces還提供了其他的功能,比如:
Security, Core Location, SQLite, 和Address Book. 其中Security是用來處理認證,密碼管理,按安全性管理的; Core Location是用來處理GPS定位的;SQLLite是輕量級的資料庫,而AddressBook則用來處理電話薄資料的。下面是具體介紹:
(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安裝的目標目錄。
3,Media
如同其名,Media層提供了圖片,音樂,影片等多媒體功能。映像分為2D映像和3D映像, 前者由Quartz2D來支援,後者則是用OpenglES.與音樂對應的模組是Core Audio和OpenAL, Media Player 實現了影片的播放, 而最後還提供了Core Animation來對強大動畫的支援。具體介紹如下:
(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 應用中產生、錄製、混合和播放音頻。開發人員也能通過核心音頻訪問手機裝置的震動功能。
核心音頻架構:
架構(Framework)
服務(Service)
CoreAudio.framework
定義核心音訊音頻資料類型
AudioUnit.framework
提供音頻和流媒體檔案的
回放和錄製,並且管理音
頻檔案和播放提示聲音
AudioToolbox.framework
提供使用內建音頻單元服務,
音頻處理模組
② 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等。
4,Cocoa Touch
最上面一層是Cocoa Touch,它是Objective-C的API, 其中最核心的部分是UIKit.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應用中顯示連絡人資訊,並確保所有應用使用相同的程式介面,保證應用在不同平台的一致性。
總結:
當我們要開發iPhone程式的時候,首先要現從上層入手,優先使用Objective-C封裝後的庫,也就是通過 UIKit.framework搭配Foundation.framework來進行開發,而當面對一些比較複雜的功能時,像是多媒體的處理或是繪圖,再往下層去找尋相關的framwork開完成。
轉自:http://blog.sina.com.cn/s/blog_62ba0fdd0100jupb.html