ios架構

1、幾個概念

Cocoa是蘋果開發Mac OS應用系統的框架,基於Objective-C,它包括:Foundation和AppKit;
Cocoa框架在iOS上叫做Cocoa Touch,Cocoa Touch框架包含:Foundation和UIKit。

Foundation:提供了一系列基礎數據類型、以及枚舉、容器的支持。來自於這個框架的類名以NS開頭。

AppKit:類名也以NS開頭。
UIKit:iOS上的用戶圖形包。UI開頭的類都來自於這個框架。


IOS架構


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來對強大動畫的支持。具體介紹如下:
   圖像技術(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畫圖代碼和本地窗口對象的接口。

   音頻技術(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的代碼模塊可以平滑地移植到其他平臺。

   視頻技術(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開完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章