標籤:
ios系統礦建概述
iOS作業系統是蘋果為公司行動裝置提供的作業系統,為方便應用開發人員採用了先進的設計模式。採用了經典的MVC設計模式和架構模式。本篇文章我們主要關注iOS系統提供的架構,對MVC設計模式不做過多的描述。
我們通常稱呼iOS的架構為Cocoa Touch架構,Cocoa Touch是一個架構的集合,裡麵包含了眾多的子架構。每一個子架構都是一個目錄,包含了共用資源庫,用於訪問該資產庫中儲存的代碼的標頭檔,以及映像、音效檔等其他資源,共用資源庫定義應用程式可以調用的函數和方法。架構中的類相互依賴構成一個整體,提供完善的某一方面的服務或解決方案,多個架構一起實現整個應用程式的結構。由於應用程式的結構是通用的,開發人員通過架構提供的函數和方法,做細緻個人化的處理,從而滿足不同應用的不同需求。開發一個應用程式就是將需求細緻化的代碼插入到架構提供的設計中來組合成一個整體完成最終的應用設計。
架構的結構是泛型結構,為應用程式提供一個模板。就像開發商開發好的毛坯房,你需要用應用程式代碼來布置不同的傢具地板門窗,這才讓不同的房屋有不同的格調,不同的幸福。當然,有時候,做裝修的時候你需要簡單的改裝你的房屋,但承重牆是不能改造的。就像我們之前說的,多個架構一起實現了整個應用程式的結構,我們必須接受它所定義好的應用程式結構,設計的時候讓我們的應用適合該結構。
在Android開發中,採用模板模式來實現應用程式的一些特性行為,Android提供了Activity,Service,Content providers,Broadcast receivers四大組件預設功能,應用通過繼承這些組件根據需要覆蓋組件的一些方法來完成應用程式開發。在iOS中則採用代理和協議模式來實現應用的特性行為。例如Cocoa Touch框架組合中的UIKit架構的UIApplication對象,它負責整個應用程式生命週期的事件分發。是應用最核心的一個對象,Android的設計中就需要對其子類化,覆蓋父類的方法,iOS中則交給UIApplication的代理AppDeleagte來處理應用程式的各種狀態改變相關事件(AppDelegate需要實現UIApplicationDelegate協議) 。在iOS的架構中,大量的使用代理和協議。
iOS提供的許多可使用的架構,構成了iOS作業系統的階層,從下到上依次是:Core OS、Core Ssevices、MediaLayer、Cocoa Touch共四層。為iOS8.3系統的架構架構圖。
Core OS Layer,系統核心層包含大多數低層級接近硬體的功能,它所包含的架構常常被其它架構所使用。Accelerate架構套件含數字訊號,線性代數,影像處理的介面。針對所有的iOS裝置硬體之間的差異做最佳化,保證寫一次代碼在所有iOS裝置上高效運行。CoreBluetooth架構利用藍芽和外設互動,包括掃描串連藍牙裝置,儲存串連狀態,中斷連線,擷取外設的資料或者給外設傳輸資料等等。Security架構提供管理憑證,公開金鑰和私密金鑰信任策略,keychain,hash認證數位簽章等等與安全相關的解決方案。
Core Services Layer,系統服務層提供給應用所需要的基礎的系統服務。如Accounts賬戶架構,廣告架構,資料存放區架構,網路連接架構,地理位置架構,運動架構等等。這些服務中的最核心的是CoreFoundation和Foundation架構,定義了所有應用使用的資料類型。CoreFoundation是基於C的一組介面,Foundation是對CoreFoundation的OC封裝。
Media Layer,媒體層提供應用中視聽方面的技術,形映像相關的CoreGraphics,CoreImage,GLKit,OpenGL ES,CoreText,ImageIO等等。聲音技術相關的CoreAudio,OpenAL,AVFoundation,視頻相關的CoreMedia,Media Player架構,音視頻傳輸的AirPlay架構等等。
Cocoa Touch Layer,觸摸層提供應用基礎的關鍵支援人員和應用的外觀。如NotificationCenter的本地通知和遠程推送服務,iAd廣告架構,GameKit遊戲工具架構,訊息UI架構,圖片UI架構,地圖架構,串連手錶架構,自動適配等等
在上面所有的架構中,最重要也最經常使用的就是UIKit和Foundation架構。Foundation架構提供許多基本的對象類和資料類型,使其成為應用程式開發的基礎,為所有應用程式提供最基本的系統服務,和介面無關。 UIKit架構提供的類是基礎的UI類庫,用於建立基於觸摸的使用者介面,所有 iOS 應用程式都是基於 UIKit,它提供應用程式的基礎架構,用於構建使用者介面,繪圖、處理和使用者互動事件,響應手勢等等。UIKit通過控制器對象管理螢幕上顯示的內容,介面的跳轉,來組織應用程式。沒有UIKit架構就沒有iOS應用程式。
原文地址:http://www.jianshu.com/p/0f2ab4b09e8b
iOS系統架構概述