iphone os的技術實現包括四層:核心os(core os)層、核心服務(core service)層、**(media)層和cocoa touch層。系統低層為所有應用提供基礎服務,其他較高層包含較多的複雜服務和技術。系統層次架構如圖
當開發iphone應用時,應盡可能多地引用較高層框架(framework)。與低層框架(framework)相比,較高層框架為低層結構提供了物件導向的抽象,這些抽象為開發應用帶來了極大的方便。但是,較高層框架並沒有掩蓋低層框架,對於沒有被較高層框架封裝的低層框架的某些功能,開發者仍然可以直接引用低層框架實現某些功能。
下面我們從最高層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應用中顯示聯絡人資訊,並確保所有應用使用相同的程式介面,保證應用在不同平台的一致性。
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的標頭檔案位於/usr/include/sqlite3.h,其中是sdk安裝的目標路徑。
(7)支援xml
基礎框架提供nsxmlparser類,解析xml文件元素。libxml2庫提供操作xml內容的功能,這個開放源**的庫可以快速解析和編輯 xml資料,並且轉換xml內容到html。訪問libxml2庫的標頭檔案位於目錄/usr/include /libxml2/,其中是sdk安裝的目標目錄。
4.核心os層(core os layer)
核心os層包含作業系統的核心環境、驅動和基本介面。核心基於mac作業系統,負責作業系統的各個方面。它管理虛擬記憶體系統、執行緒、檔案系統、網路和內部通訊。核心os層的驅動也提供了硬體和系統框架之間的介面。然而,由於安全的考慮,只有有限的系統框架類能訪問核心和驅動。
iphone os提供了許多訪問作業系統低層功能的介面集,iphone 應用通過libsystem庫來訪問這些功能,這些介面集如下所示:
執行緒(posix執行緒);
網路(bsd sockets);
檔案系統訪問;
標準i/o;
bonjour和dns服務;
區域語言相關資訊(locale information);
記憶體分配;
數學計算。
許多core os技術的標頭檔案位於目錄/usr/include/,iphonesdk是sdk的安裝目錄。
支援devdiv!
iphone系統架構以及各層提供的主要服務
iphone os的技術實現包括四層 核心os core os 層 核心服務 core service 層 media 層和cocoa touch層。系統低層為所有應用提供基礎服務,其他較高層包含較多的複雜服務和技術。系統層次架構如圖 當開發iphone應用時,應盡可能多地引用較高層框架 frame...
Linux qt pro檔案判斷系統架構以及定義巨集
由於linux平台專案需要同時在 x86 和 arm64 上編譯,並且需要指定不同的包含路徑,並且 pro 檔案需要定義巨集,特此記錄一下 pro 新增如下 函式原型為contains variablename,value 如果 variablename 包含 value 則返回成功 qmake h...
框架,系統架構以及架構師的區別
框架,即framework,其實是某種應用的半成品,就是一組元件,供你選擇來完成自己的系統。簡單說就是別人搭好的舞台,你來做表演。而且框架是一般是成熟的,不斷公升級的軟體。架構,也就是通常所說的軟體體系結構,體系結構一般分為三部分 構建 用於描述計算機 聯結器,用於描述構建的鏈結部分 配置,將構建和...