天天看點

iOS所有架構-Cocoatouch等

在iOS中架構是一個目錄,包含了共享資源庫,用于通路該資源庫中儲存的代碼的頭檔案,以及圖像、聲音檔案等其他資源。共享資源庫定義應用程式可以調用的函數和方法。

Cocoa Touch層包含建立 iOS應用程式所需的關鍵架構。上至實作應用程式可視界面,下至與進階系統服務互動,都需要該層技術提供底層基礎。在開發應用程式的時候,請盡可能不要使用更底層的架構,盡可能使用該層的架構。

進階特性

下面章節描述一些常見特性,也許您也正打算在應用程式支援這些特性。

多任務

如果應用程式建構于iPhone SDK 4.0及其後續版本(且運作于ios 4.0及後續版本作業系統),則點選Home鍵的時候,應用程式不會結束,而是切換到背景。對于大多數應用程式來說,進入背景,它們就會進入挂起狀态。讓應用程式駐留在背景可以避免以後的重新啟動過程,應用程式可以直接将自己激活,這在很大程度上改善了整體使用者體驗。另外,将應用程式挂起也可以改善系統性能,因為挂起應用程式可以最小化電能使用,并可讓前台應用程式獲得更多的執行時間。

盡管應用程式進入背景就會被挂起,但可以通過下述的技術讓其在背景繼續運作:

  • 應用程式可以請求一定的時間完成某些重要的任務。
  • 應用程式可以聲明自身支援的某種服務需要獲得定期背景執行時間。
  • 應用程式可以使用本地通告在指定時間向使用者發通知。這種方式對于應用程式是否運作沒有要求。

不管應用程式是被挂起還是在背景運作,支援多任務不需要付出額外的工作。但是在某些情況(例如記憶體不足)下,應用程式可能會被結束運作。是以,應用程式應該可以在任何時候退出。這就意味着許多在退出應用程式時需要執行的任務必須改為在應用程式切換到背景的時候執行。這就要求您在應用程式委托中實作一些新的方法以響應程式的狀态切換。

如果需要進一步了解如何對背景狀态切換進行處理以及如何讓應用程式在背景繼續運作,請檢視iOS應用程式程式設計指南。

資料保護

和敏感使用者資料打交道的應用程式可以使用裝置内建加密功能(有些裝置可能不提供内建加密功能)對資料進行保護。如果應用程式指定某個檔案受保護,系統會以加密格式将該檔案儲存在磁盤。當裝置鎖住的時候,您的應用程式以及其他潛在的闖入者都不能通路該檔案,而當使用者解鎖裝置後,系統會生成一份密鑰以便您的應用程式就通路該檔案。

如需實作資料保護,應用程式應在待保護資料的建立和管理方式下一些功夫。它必須能夠在資料建立之時保證其安全,而且需要适配裝置上鎖或未上鎖造成的檔案可通路性的變化。

如需進一步了解應用程式如何為檔案添加資料保護,請檢視iOS應用程式程式設計指南中的實作标準的應用程式行為一章。

蘋果推送通知服務

iOS 3.0及後續版本的系統中,不管應用程式是否運作,蘋果推送通知服務可用于通知使用者某個應用程式具有新資訊。利用這項服務,您可以向系統推送文本通知,可以觸發聲音提醒或者在應用程式圖示上添加一個數字化标記。這樣使用者就知道他們應該打開應用程式接收相關資訊。

從設計角度看,讓應用程式支援推送通知包含兩個部分。首先,iOS應用程式需要請求系統向其發送通知,然後要合理配置應用程式委托使其可以對通知進行恰當處理。這些工作可以通過應用程式委托以及

UIApplication

對象合作完成。第二,您需要提供一個伺服器端程序用于産生最初的通知。該程序運作在您自己的本地伺服器,它和蘋果推送通知服務協同工作以産生最初的通知。

如需進一步了解如何配置應用程式以便使用遠端通知,請檢視本地通知及推送通知程式設計指南。 

本地通知

iOS 4.0引入了本地通知。本地通知是對已有推送通知的補充,通用程式可以通過它在本地生成通知,不再需要依賴外部伺服器。當有重要的事件發生時,背景應用程式可以利用本地通知獲得使用者關注。舉個例子,運作于背景的導航應用程式可以使用本地通知提醒使用者要轉彎。應用程式也可以安排在未來的某個時刻向使用者發送本地通知,而且發送這些通知并不要求應用程式處于運作狀态。

本地通知的優點是它獨立于您的應用程式。一旦某個通知被安排好後,系統會負責通知發送。而且在發送通知的時候,您的應用程式無需處于運作狀态

如需進一步了解本地通知的使用方式,請檢視本地通知及推送通知程式設計指南。

手勢識别器

iOS 3.2引入了手勢識别器。手勢識别器是一個綁定到視圖的對象,用于檢測常見的手勢類型。将手勢識别器綁定到視圖後,您可以告訴它某個手勢發生的時候執行何種動作。之後,手勢識别器就可以對原始事件進行跟蹤,根據系統定義的試探方式識别手勢。在引入手勢識别器前,如果要識别一個手勢,您需要跟蹤視圖的原始觸摸事件流,然後再使用複雜的試探方法來判斷這些事件是否表示某種手勢。

現在,UIKit架構中包含一個

UIGestureRecognizer

 類,它定義了所有手勢識别器的基本行為。您可以使用自定義的手勢識别器子類或者系統定義的某個子類處理下面這些标準手勢:

  • 拍擊 (任意次數的拍擊)
  • 向裡或向外捏 (用于縮放)
  • 搖動或者拖拽
  • 擦碰 (以任意方向)
  • 旋轉 (手指朝相反方向移動)
  • 長按

如需進一步了解您可以使用的手勢識别器,請檢視iOS事件處理指南。

檔案共享支援

應用程式可以使用檔案共享讓使用者通路程式的使用者資料檔案。檔案共享允許應用程式通過iTunes向使用者顯露應用程式

/Documents

目錄的内容。這樣,使用者就可以在iPad和桌面計算機來回移動檔案。但是,該功能不允許應用程式和同一裝置上的其他應用程式共享檔案。如果希望在程式間共享檔案,請使用剪貼闆或者文檔互動控制器對象。

您可以通過如下步驟來讓應用程式支援檔案共享:

  1. 在應用程式的

    Info.plist

    檔案中添加

    UIFileSharingEnabled

    鍵,并将鍵值設定為

    YES

  2. 将您希望共享的檔案放在應用程式的

    Documents

    目錄。
  3. 一旦裝置插入到使用者計算機,iTunes 9.1就會在選中裝置的Apps标簽中顯示一個File Sharing區域。
  4. 此後,使用者就可以向該目錄添加檔案或者将檔案移動到桌面計算機中。

如果應用程式支援檔案共享,當檔案添加到

Documents

目錄後,應用程式應該能夠識别并做出适當響應。例如說,應用程式可以将新檔案的内容顯示界面上。請不要向使用者展現目錄的檔案清單并詢問他們希望對檔案執行什麼操作。

如需進一步了解 

UIFileSharingEnabled

鍵,請檢視資訊屬性清單參考。

點對點服務

在iOS 3.0 及後續版本,Game Kit架構支援經由藍牙進行點對點連接配接。您可以使用點對點連接配接啟動與某個鄰近裝置的通訊會話,也可用它實作多種多玩家遊戲的常見特性。雖然點對點連接配接主要應用于遊戲,但您也可将之應用于其他類型應用程式。

如需進一步了解如何在應用程式中使用點對點連接配接的特性,請檢視Game Kit 程式設計指南。如果需要概要了解Game Kit架構,請檢視“Game Kit 架構”。

标準系統視圖控制器

Cocoa Touch層許多架構含有展現标準系統界面的視圖控制器。我們提倡您在應用程式中使用這些視圖控制器,這樣可以讓您的程式和系統具有一緻的使用者體驗。如果您需要執行下述任務,請從相應的架構中選擇一個視圖控制器使用:

  • 顯示或者編輯聯系人資訊 - 請使用Address Book UI架構中的視圖控制器。
  • 建立或者編輯月曆事件 - 請使用Event Kit UI架構的視圖控制器。
  • 建立email或者SMS消息 - 請使用Message UI架構中的視圖控制器。
  • 打開或者預覽一份檔案的内容 - 請使用UIKit架構中的

    UIDocumentInteractionController

    類。
  • 從使用者的照片庫選取一張照片 - 請使用UIKit架構中的 

    UIImagePickerController

     類。
  • 拍攝視訊片段 - 請使用UIKit架構中的

    UIImagePickerController

    類。

如需了解如何選擇使用視圖控制器,請檢視iOS視圖控制器程式設計指南。如需了解特定視圖控制器所展現的界面,請檢視相應的架構參考。

外部裝置支援

安裝iOS 3.2的裝置可通過一組裝置支援的線纜連接配接一個外部顯示裝置。當外部裝置連上後,應用程式就可以使用其顯示屏顯示内容。螢幕的資訊,包括螢幕能夠支援的分辨率都可通過UIKit架構的接口擷取。您也可以通過該架構将應用程式視窗關聯到某個螢幕。

  • UIScreen

     類用于擷取目前所有螢幕(包括裝置主螢幕)的螢幕對象。螢幕對象包含螢幕的屬性資訊(包括将螢幕的尺寸和像素比例也考慮在内的螢幕特征)。
  • 您可以從

    UIScreenMode

     類獲得某個具有特定尺寸像素比例的螢幕的資訊。
  • 您可以将視窗(使用

    UIWindow

    類來表示)指定到某個特定的螢幕。如果您需要對内容作鏡像顯示,則需要提供兩個獨立的視窗,然後再在其中顯示相同内容。

    整個架構架構圖如下:

iOS所有架構-Cocoatouch等

一Cocoa Touch Layer(觸摸UI層)

   CocoaTouch Layer包含建立ios應用關鍵的架構。該層包含的架構定義應用的外觀,也提供基本的應用基礎和關鍵的技術支援,例如多任務、觸摸輸入、推送通知和許多其它的進階系統服務。在開發應用時,應當首先研究該層的技術和技術看是否能夠滿足需要。

1.1 Cocoa Touch Layer包含如下關鍵技術

1).AirDrop

  AirDrop允許使用者與附近裝置共享圖檔、文檔、urls連結以及其它種類的資料。

2)、Text Kit

 TextKit是處理文本和排版的一個全功能、進階别的類集合。使用Text Kit你能在段落、列或者頁上對帶有風格的文本進行布局;也能在任意區域(如圖形)周圍布局流動的文本;還能用它來管理多種字型。

 開發應用時應該首先考慮使用Text Kit來進行文本呈現,而不是Core Text。Text Kit與所有UIKit中的基于文本的控制內建允許應用更容易地建立、編輯、顯示和存儲文本。

3)、UIKit Dynamics

UIKit dynamics用來為符合UIDynamicItem協定的UIView對象或其它對象規定動畫行為。通過在應用的UI中內建真實世界行為和特性進,動畫行為為應用提供了一種增強使用者體驗的方式。

4)、Multitasking

在ios中多任務用來設計來使電池使用時間最大化。

5)、Auto Layout

 自動布局幫助你使用非常少的代碼來建立動态接口。

 使用AutoLayout定義如何在使用者接口上布局元素的規則,這些規則表達了視圖類之間的關系,如規定一個按鈕總是處于它的父視窗的左邊緣20個點。

在Auto Layout中使用的實體是被稱為constraints的Objective-C對象。

6)、Storyboards

串聯圖 是設計應用使用者接口的推薦方式。串聯圖讓你在一個地方就能夠設計全部的使用者接口,友善在一個位置看到所有的視圖和視圖控制器以及了解它們是如何一起工作的。串聯圖的一個重要的部分是定義segues(segues是從一個視圖控制器到另一個的轉換)。這些轉換代表使用者接口之間的互動。你可以使用XCOE來可視的定義這些轉換或者通過程式設計啟動它們。

 你能使用一個單串聯圖檔案來存儲所有的應用視圖控制器和視圖,或者使用多個視圖串聯圖檔案來組織使用者接口。

 在應用建立時間,Xcode讀取串聯圖檔案的内容并把它分成多個能獨立加載的離散的片斷,以便獲得更好的性能。UIKit架構提供了相應的類來從程式中存取一個串聯圖的内容。

7)、UI State Preservation

UI狀态儲存能夠使應用表現的一直運作,進而為使用者提供無縫的體驗。如果系統遇到記憶體壓力,系統可能安靜地強制停止一個或多個背景應用。

當應用從前台移到背景時,該服務能儲存應用的視圖和視圖控制器的狀态。在下次應用重新啟動時,能夠使用先前儲存的狀态資訊來恢複視圖和視圖控制器到它們先前的配置,使應用表現得好像一直在運作。

8)、Apple Push Notification Service

蘋果的推送通知服務提供了一種提示使用者關于新資訊的方式,即使應用目前不在激活運作狀态。

使用該服務,你能推送文本通知,在應用圖示上增加一個标記或者在任意時間觸發聲音提示。

這些消息讓使用者知道他們應該打開應用來接收相關資訊。自Ios7開始,你甚至能推送無聲的通知來讓應用知道有了新的内容可以下載下傳。

為了使用IOS應用的推送通知,使用者需要做兩部分的工作。首先應用必須登記該通知服務以及在通知被送出時處理相關的通知資料。第二,你必須提供一個服務端的程序來産生通知。

服務端的程序可以使用你自己的本地伺服器或者使用蘋果的推送通知服務。

9)、Local Notifications

本地通知作為推送通知機制的補充,可以給應用提供一種不依賴外部伺服器産生本地通知的方式。

 運作在後頭的應用能使用本地通知作為當重要的事件發生時引起使用者注意的一種方式。例如,運作在背景的導航應用能使用本地通知來提示使用者什麼時間該轉彎了。

應用也能排程本地通知在将來的時間送出以及使那些通知在應用不運作也能被送出。

本地通知的一個優點是它們與你的應用是獨立的。在一個通知已被排程,系統管理它的送出。另外當通知被送出時你的應用甚至不必運作。

10)、Gesture Recognizers

手勢識别用來檢測通常類型的手勢。由于手勢識别使用與系統檢測手勢相同的試探方法,是以手勢識别為應用提供了一個一緻的行為。為了使用它,你能在你的視圖上附加手勢識别功能和并給它提供一個在手勢出現時要執行的方法。

手勢識别跟蹤原始的觸摸事件和确定它們什麼時候與想要的手勢比對。

11)、System View Controllers

許多系統架構為标準的系統接口定義了視圖控制器。隻要有可能,為了呈現一緻的使用者體驗,就應該使用系統提供的視圖控制器而不是建立一個新的。

2.2 Cocoa Touch層架構

CoCoa Touch層包含如下架構:

1、Address Book UI Framework(位址本UI架構)

該架構提供一個面向對象的程式設計接口。用來顯示标準的系統接口,來建立新的聯系人和編輯和選擇已存在的聯系人。

2、Event Kit UI Framework(月曆事件UI架構)

 該架構提供一個視圖控制器來呈現标準的系統接口,來觀察和編輯月曆相關的事件。EventKit UI Framework基于Event Kit framework架構。

3、Game Kit Framework(遊戲工具架構)

 該架構實作對遊戲中心的支援,讓使用者能夠線上共享他們的遊戲相關的資訊。

4、iAd Framework(iAD架構)

 該架構用來在應用中提供廣告條。

 當你想要顯示廣告時,廣告條與使用者UI上的标準的視圖進行合并。

 這些視圖與蘋果的iAd服務一起工作,自動處理、加載和呈現富媒體廣告以及應答在那些廣告條上的點選等所有相關的工作。

5、Map Kit Framework(地圖工具架構)

MapKit提供與應用的UI組合的一個可滾動的地圖。

除了顯示一個地圖,你能使用該架構接口來定制地圖的内容和外觀,也能使用注解來标記感興趣的點,也能使用定制的内容來與地圖内容疊置。例如,你可以在地圖上來畫一條公交路線,或者使用注解來高亮顯示附近的商店和餐館。

除了顯示地圖,MapKit架構還能與地圖應用以及蘋果的地圖伺服器內建來為使用者指引方向。

地圖應用能夠給任意支援方向的應用提供方向的代理。如提供特定類型方向的應用,例如一個顯示地鐵路線的應用,能登記請求接收地圖應用提供的方向。

應用也能向蘋果的伺服器請求步行或駕駛方向,并與他們定制的方向的路徑資訊混合來為使用者提供完整的點到點體驗。

6、Message UI Framework( 消息UI架構)

該架構用來在應用中提供編輯郵件和sms消息的支援。

編輯支援包括一個呈現到你的應用的視圖控制器接口,并能設定這個視圖控制器的一些區域,如接收人、主題、郵件主體和郵件想包括的任意附件。

在呈現視圖控制器後,也能為使用者提供一個在發送郵件之前可以編輯郵件的選項。

7、UIKit Framework

該架構提供實作圖形和事件驅動的應用的至關重要的基礎。包括:   

      1、基本的應用管理和基礎設施,包括應用的主循環;

 2、使用者接口管理,包括對storyboards和nib檔案的支援;

      3、一個用來封裝使用者UI内容的視圖控制器模式;

      4、 标準系統視圖和控制對象;

      5、提供處理觸摸和運動事件的支援;

      6、支援包括與iCloud內建功能的文檔模式;

      7、 圖形和視窗支援,包括支援外部顯示器;

      8、多任務支援;

      9、列印支援;

     10、 定制标準UIKit控制的外觀;

     11、支援文本和web内容;

     12、剪切、複制、粘貼的支援;

     13、支援動畫UI;

     14、通過url語義和架構接口與系統提供的其它應用內建的能力;

     15、對有障礙使用者的可存取性的支援;

     16、支援ApplePush Notification服務;

     17、本地通知排程和送出;

     18、pdf 建立;

     19、支援定制像系統鍵盤行為一樣的使用者輸入視圖;

     20、支援建立與系統鍵盤互動的定制的文本視圖;

     21、支援通過email,Twitter, Facebook和其它服務共享内容。

也支援一些裝置特定功能的內建,例如

1、内建的錄影機;

2、使用者的圖檔庫;

3、裝置名和模式資訊;

4、電池狀态資訊;

5、接近傳感器資訊;

6、來自附件耳機的遠端控制資訊

二、MediaLayer(媒體層)

媒體層包含在應用中實作多媒體體驗的圖形、聲音、視訊技術和架構。使用這層的技術可以使你容易的建立更加好看和好聽的應用。

2.1 包含的關鍵技術

 2.1.1 圖形技術

  高品質的圖形是所有應用的重要的組成部分。IOS提供了許多幫助你定制藝術和圖形螢幕的技術。IOS圖形技術為其提供了廣泛的支援,并可以與UIKit視圖架構無縫工作。

你能使用标準的視圖來快速送出高品質的接口,或者使用本層的圖形技術建立你自己的定制視圖來送出一個更加豐富的圖形體驗。

1)、UIKit graphics

UIKit定義的繪制圖像和Bézier路徑,以及動畫視圖内容的進階别技術。

UIKit視圖提供快速和有效的方式來呈現圖像和文本内容。

UIKIT視圖也能通過顯示和使用UIKitdynamics技術進行動畫,并為使用者提供回報,促進使用者互動。

2)、CoreGraphics 架構

CoreGraphics也稱作Quartz,是對定制的2D向量和圖像呈現提供支援的本地繪制引擎。

該架構提供的引擎雖然沒有OpenGLES引擎速度快,但該架構能夠很好地适合于呈現定制的2d圖形和動态圖像。

3)、CoreAnimation架構

CoreAnimation也是Quartz核心架構的一部分,是優化應用動畫體驗的基礎技術。

UIKit視圖基于 Core Animation提供視圖級别的動畫支援。

當你想對動畫行為有更多控制時也能直接使用CoreAnimation。

4)、Core Image

CoreImage提供非破壞的方式操作視訊和靜态圖像。

5)、OpenGL ES及GLKit

OpenGLES使用硬體加速接口來處理先進的2d 和3d 呈現。OpenGLES通常由遊戲開發者或想實作沉浸式圖像體驗的開發者使用。

OpenGLES架構提供對呈現過程的全部控制,以及提供建立平滑動畫所需要的幀速。

GLKit是一組objective-c類,以便能夠使用面向對象接口來提供OpenGL ES的強大能力。

6)、Text Kit和CoreText

Text Kit是UIKit架構的家族,用來來執行最好的排面和文本管理。如果你的應用實作先進的文本操作,Text Kit提供與應用視圖的無縫內建。

CoreText是處理先進排面和布局的低級别的C語言架構。

7)、Image I/O

ImageI/O提供讀寫大多數圖像格式的接口。

8)、Assets Library

AssetsLibrary架構讓你存取使用者的圖檔、視訊和媒體。

你想在應用中內建使用者自己的内容時可以使用該架構。

  2.1.2 聲音技術

       聲音技術工作于底層硬體之上,為使用者提供更加豐富的聲音體驗。這些體驗包括播放和記錄高品質的聲音、處理MIDI内容以及使用裝置内建的聲音 等能力,

     1). Media Player framework

       該架構是一個進階别的架構, 用來為使用者提供對iTunes庫存取的容易方式,也提供對播放軌迹和播放清單的支援。

       當你想快速在應用中內建聲音以及不需要控制播放行為時可以使用該架構。

     2)、AV Foundation

       AVFoundation是管理聲音以及視訊播放和記錄的面向對象接口。

       在記錄聲音和想對聲音播放過程有更好的控制時可以使用該架構。

     3)、OpenAL

       OpenAL是一個提供位置音效的跨平台的工業标準技術和接口。

       遊戲開發者經常使用該技術來提供高品質的聲音。

    4)、Core Audio

      Core Audio是一組簡單和智能的接口來記錄和播放聲音以及MIDI内容。

      在需要對聲音有更好控制時使用該架構。

  2.1.3  視訊技術

      視訊技術提供管理應用中的靜态視訊内容或者播放來自Internet的視訊流的支援。

      對于帶有适當的記錄硬體的裝置,該架構還能夠記錄視訊以及與應用進行內建。

      1).UIImagePickerController

          UIImagePickerController是一個選擇使用者媒體檔案的UIKit視圖控制器。

      2)、Media Player

         MediaPlayer架構提供一組呈現視訊内容的簡單易用的接口,該架構支援全屏和小視窗視訊播放,也為使用者提供可選的播放控制。

      3)、AVFoundation

        AVFoundation提供先進的視訊播放和記錄能力。

        在需要對視訊呈現和記錄有更多的控制時使用該架構,例如在實時應用中分層顯示實時視訊和應用提供的其它内容。

      4)、CoreMedia

        CoreMedia架構為操作媒體定義低級别的資料類型和接口。

        當你需要對視訊内容有無比的控制時可以使用該架構。

  2.1.4  AirPlay技術

       AirPlay讓應用串流聲音和視訊内容到Apple TV或者串流聲音内容到第三方揚聲器和接收器。

       AirPlay内建于許多架構,包括UIKit、Media Player、AVFoundation、Core Audio。是以在大多數情況你不需要為了支援它做任何事。在使用那些架構時,當播放内容時自動獲得AirPlay支援。當使用者選擇使用AirPlay播放内容時系統自動進行路由。

2.2包含的架構

       MediaLayer提供如下架構和服務。

       2.2.1、Assets Library 架構

            AssetsLibrary 架構(AssetsLibrary.framework)提供對使用者裝置上圖檔應用管理的圖檔和視訊的存取。

           使用該架構來存取使用者儲存的圖檔相冊或導入到裝置的任意相冊中的圖檔,你也能儲存新的圖檔和視訊到使用者的圖檔相冊。

      2.2.2、AV Foundation 架構

            AVFoundation 架構 (AVFoundation.framework)提供一多點傳播放、記錄和管理聲音和視訊内容的Objective-C類。

            當你想在應用的ui接口無縫內建媒體能力時使用該架構。

            你也能使用它來進行更先進的媒體處理,例如同時播放多個聲音或者控制播放和記錄過程的多個方面。

            該架構提供的服務包括:    

             1)聲音會話管理,包括對系統聲明你的應用聲音能力;  

             2)對應用媒體資源的管理;

             3)對編輯媒體内容的支援;

             4)捕捉聲音和視訊的能力;

             5)播放聲音和視訊的能力;

             6)軌迹管理;

             7)媒體中繼資料的管理;

             8)立體拍攝;

             9)聲音之間的精确同步;

           10)提供一個确定聲音檔案細節内容的Objective-C接口,例如資料格式,采樣率,通道數;

           11) 通過AirPlay串流内容。

     2.2.3、Core Audio 架構

        Core Audio是一個對聲音處理提供本地支援的架構家族。這些架構支援聲音的産生、記錄、混合和回放。你也能使用這些接口處理MIDI内容以及串流聲音和MIDI内容到其它應用。

        Core Audio架構包括如下架構:

        CoreAudio.framework

        定義Core Audio架構使用的所有資料類型。

AudioToolbox.framework

提供聲音檔案和聲音流的播放和記錄服務。也提供管理聲音檔案,播放系統警告聲音,在某些裝置上觸發震動的支援。

AudioUnit.framework

提供使用内建聲音單元。也提供使你的應用的聲音内容作為對其它應用可視的聲音元件的支援。

CoreMIDI.framework

提供與MIDI裝置通訊的标準方式,包括硬體鍵盤和合成器。你使用這個架構來發送和接收MIDI消息以及與通過dock連接配接器或網絡連接配接到IOS裝置的MIDI外設互動。

MediaToolbox.framework

提供對聲音tap接口的存取。

 2.2.4、Core Graphics 架構

      CoreGraphics.framework包含Quartz 2D繪制api。

      Quartz是一個原先用在OS X的先進的、向量繪制引擎。Quartz支援路徑繪制,抗鋸齒呈現,剃度,圖像,顔色,坐标空間轉換以及pdf 内容建立、顯示和分析等功能。

      雖然這個api是C-based接口,但它使用了面向對象抽象來表現基本的繪制對象,是以使它容易存儲和重用圖形内容。

2.2.5、Core Image 架構

      CoreImage 架構(CoreImage.framework)提供一組強大的内建過濾器來操作視訊和靜态圖像。

      你能在觸摸彈起、糾正圖檔以及面部和特征檢測等許多方面使用這些内建的過濾器。這些過濾器的先進特點是它們操作在非破壞方式,即原先的圖像不被改變。

       這些過濾器針對底層硬體進行了優化,是以它們是快速和有效的。

2.2.6、Core Text 架構

      CoreText 架構 (CoreText.framework)提供一個對文本進行布局和字型處理的簡單的、高性能的C-based接口。

      該架構用在不使用TextKit但仍想獲得在字處理應用中發現的先進文本處理能力。

      該架構提供了一個智能的文本布局引擎,包括在其它内容周圍環繞文本的能力,它也支援使用多種字型和呈現屬性的先進的文本風格。

2.2.7、Core Video 架構

      CoreVideo 架構 (CoreVideo.framework)為Core Media架構提供緩沖和緩沖池支援。多數應用從不直接使用該架構。

2.2.8、Game Controller 架構

      GameController 架構 (GameController.framework)讓你在應用中發現和配置針對iPhone/iPod/iPad裝置的遊戲控制器。

       遊戲控制器可以是實體連接配接到iOS裝置或者是通過藍牙無線連接配接。GameController架構當控制器可獲得時通知你的應用讓應用可以規定哪個控制器輸入與你的應用相關。

2.2.9、GLKit 架構

      GLKit架構 (GLKit.framework)包含一組簡化建立OpenGLES應用的Objective-C based 單元類。

      GLKit支援應用開發的四個關鍵領域

       1)GLKView和GLKViewController類提供一個OpenGLES視圖和其呈現循環的标準實作。

          OpenGLES視圖代表應用管理底層的framebuffer對象。應用隻需在視圖上繪制。

  能夠異步或同步加載紋理。當異步加載紋理時,應用應提供一個完成處理塊,該處理塊在紋理加載進應用上下文時被調用。

 4)GLKBaseEffect,GLKSkyboxEffect,和GLKReflectionMapEffect類實作給通用圖形操作提供可配置的圖形着色。尤其GLKBaseEffect類實作了OpenGL ES 1.1規範上的光亮和材質模式,簡化了移植一個應用從OpenGL ES 1.1到OpenGL ES最後版本的努力。

2.2.10、Image I/O 架構

       ImageI/O 架構(ImageIO.framework)提供輸入和輸出圖像資料和圖像中繼資料的接口。

        該架構利用CoreGraphics資料類型和功能,并支援在ios 上所有的可獲得的标準的圖像類型。你能使用這個架構存取Exif和IPTC中繼資料屬性。

2.2.11、Media Accessibility 架構

      MediaAccessibility 架構 (MediaAccessibility.framework)管理媒體檔案中closed-caption内容的呈現。

      該架構與新的設定配合工作可以讓使用者決定是否允許closed-caption顯示。

2.2.12、Media Player 架構

      MediaPlayer 架構(MediaPlayer.framework)提供應用中播放聲音和視訊的進階别支援。能夠使用該架構做如下工作:

        1) 播放視訊到使用者螢幕或通過AirPlay到另外的裝置螢幕。能夠全螢幕播放視訊或以可改變視圖大小的方式播放。

        2)存取使用者的iTunes音樂庫。能夠播放音樂軌迹和播放清單、搜尋音樂、給使用者提供一個媒體picker呈現接口。

        3)配置和管理電影的回放。

        4) 在鎖定螢幕和app 切換視窗上顯示NowPlaying資訊。當内容通過AirPlay送出時還能顯示到AppleTV上。

        5)檢測視訊通過AirPlay被串流的時間

2.2.13、OpenAL 架構

      OpenAudio Library (OpenAL)接口是用來在應用中提供位置音效的跨平台的标準。

      能夠使用該接口在遊戲和其它需要位置音效輸出的程式中實作高性能、高品質的聲音。

      因為OpenAL是跨平台的标準,在iOS使用OpenAL編寫的代碼能夠容易地移植到許多其它平台。

2.2.14、OpenGL ES 架構

      OpenGLES 架構 (OpenGLES.framework)提供繪制2d和3d内容的工具, 它是一個C-based的架構。

      該架構以最接近裝置硬體的方式為全屏沉浸式應用例如遊戲提供細粒度的圖形控制和高的幀率。

      你能夠與EAGL配合使用這個架構,為OpenGL ES 繪制調用和UIKit的本地視窗對象之間提供接口。

      該架構支援OpenGLES 1.1, 2.0, 3.0規範。2.0規範增加了片段和頂點着色的支援,3.0規範增加了更多的功能,包括多個呈現目标和變換回報。

2.2.15、Quartz Core 架構

        QuartzCore 架構(QuartzCore.framework)包含Core Animation接口。

       Core Animation是一個先進的複合技術,使用它能容易建立快和有效的view-based的動畫。

      複合引擎利用底層硬體來有效的實時操作視圖内容。

      隻需規定動畫的起始點,CoreAnimation做剩下的工作。

        因為Core Animation内嵌在UIView架構的底層,是以它總是可用的。

2.2.16Sprite Kit 架構

       SpriteKit 架構 (SpriteKit.framework)架構為2d和2.5d遊戲提供硬體加速的動畫系統。

       SpriteKit提供大多數遊戲需要的基礎,包括一個圖形引擎和動畫系統,聲音播放支援,一個實體仿真引擎。  使用SpriteKit不需你自己建立這些事情,使你聚焦在内容設計和内容的進階别的互動上。

       在Sprite Kit應用中内容組織為場景。一個場景包括紋理對象,視訊,路徑圖形,核心圖像過濾器和其它的特效。SpriteKit利用這些對象,确定這些對象到螢幕上的最有效的方式。當在場景中到了動畫内容的時刻,你能使用SpriteKit來顯式規定你想執行的行動或使用實體仿真引擎來為那些對象定義實體行為(例如重力、引力或排拆力)。

        除了SpriteKit架構,也有其它Xcode工具來建立顆粒發射效果和紋理圖。你能使用Xcode工具來管理應用資源和快速地更新Sprite Kit場景。

三 CoreServices Layer(核心服務層)

        CoreServices Layer包含應用需要的基礎的系統服務。這些服務中的核心是CoreFoundation和Foundation架構,定義了所有應用使用的基本類型。

          該層也包含獨立的技術來支援一些其它功能, 例如位置、iCloud、社交媒體和網絡。

3.1 包含的進階功能:

     Peer-to-Peer Services(點到點服務)

         這個Multipeer Connectivity架構提供通過藍牙進行p2p連接配接的能力。

         你能使用p2p連接配接來啟動與附近裝置的通訊會話。

         雖然p2p連接配接主要用在遊戲中,你也能在其它類型的應用中使用這個功能。

    iCloud Storage(雲存儲)

       iCloud存儲讓應用把使用者文檔和資料寫到一個中心位置,使用者然後能從他們的計算機和ios 裝置存取這些資料。

      使用iCloud可以使使用者文檔無所不在,意味着使用者能從任何裝置閱讀或編輯那些文檔,而不需要顯式的同步或檔案傳輸。存儲文檔到使用者的iCloud賬戶也為使用者提供了一層安全。即使使用者的裝置丢失,那些裝置上的文檔如果已經儲存到iCloud就不會丢失。

      應用能以兩種方式使用 iCloud存儲,每一種有不同的使用意圖:

      1) iCloud文檔存儲。

       可以使用這個功能在使用者的iCloud賬戶存儲使用者文檔和資料。

      2)iCloud鍵值存儲。

      使用這個功能在應用之間共享資料。

       大多數應用使用iCloud文檔存儲來共享來自使用者賬戶的文檔。使用iCloud文檔存儲使用者關心的是文檔能否能夠在裝置之間共享以及他們是否能夠從一個給定裝置檢視和管理那些文檔。

      相對的,iCloud鍵值存儲是應用與應用的其它執行個體共享小量資料(幾十k位元組)的方式,應用應當用它存儲非緊急的應用資料,例如設定。

   Automatic Reference Counting(自動引用計數)

         AutomaticReference Counting(ARC)是一個編譯級别的功能,用它來簡化Objective-C對象生命周期過程的管理,以此代替使用者必須記住什麼時候應該保持和釋放對象。

        ARC評估對象的生命周期需求和自動在編譯時間插入适當的方法調用。

        ARC用來代替ios 的早期版本中存在的傳統的管理記憶體的程式設計模式。

        新建立的工程自動使用ARC。XCODE也提供了移植工具幫助你轉換遺留的工程來使用ARC.

Block Objects(塊對象)

      BlockObjects是一個能夠與你的C或Objective-C代碼內建的c語言的構造塊。一個blockobject本質上是一個異步功能和相關的資料。在其它語言中有時也被稱做closure或lambda。

     Blocks尤其用作回調或放在你需要一種容易的組合執行代碼和相關資料方式的地方。

     在ios,通常在下面的場景使用Blocks:

     1)作為代理或代理方法的代替;

     2) 作為回調功能的代替;

     3)為某個一次性操作實作其完成處理函數;

     4)  在一個集合中的所有項上執行一個任務;

     5)與送出隊列一起執行異步任務。

Data Protection(資料保護)

        DataProtection允許應用利用裝置上已有的内建的加密方法來使用使用者的敏感資料。

        當應用指定一個特定的檔案被保護時,系統在磁盤上以加密格式存儲該檔案。當裝置鎖定時,該檔案的内容不能被應用和任何潛在的侵入者存取。可是當裝置由使用者解鎖時,一個解密key被建立允許你的應用存取那個檔案。

         使用者也可以使用其它級别的資料保護機制。

         實作資料保護需要你考慮如何建立和管理你想保護的資料。應用必須設計在資料的建立時間加密資料,以及當使用者鎖定或解鎖裝置時為存取條件改變做好準備。

File-Sharing Support(檔案共享支援)

      File-SharingSupport使使用者資料檔案在iTunes 9.1和以後上可被其它應用獲得。一個應用聲明支援檔案共享使它的/Documents目錄下的内容對其它使用者可獲得。使用者然後當需要時能夠把檔案從iTunes移進或移出應用的Documents目錄。

      這個特征不允許應用與相同裝置上的其它應用共享應用,這需要粘貼闆或一個文檔互動控制器對象。

     應用為了允許檔案共享支援,需要做如下工作:

1、 在應用的Info.plist檔案中增加UIFileSharingEnabled鍵,并設定其值為YES。

2)、在你的應用的Documents中放你想共享的檔案;

3、當裝置插進使用者的計算機時,iTunes在選中裝置的Apps标簽下顯式一個檔案共享節;

4、使用者然後能夠增加檔案到裝置的文檔目錄或移動檔案到桌面。

       支援檔案共享的應用應該能夠識别檔案什麼時候增加到其Documents目錄和做出适當的應答。例如應用可以使任意新檔案的内容可以從它的接口獲得。也應該從不把Documents目錄的檔案清單呈現給使用者來請求使用者決定對那些檔案做什麼。

Grand Central Dispatch

      GrandCentral Dispatch(GCD)是一個BSD技術,應用可以用來管理其任務的執行。

      GCD與高優化的核組合成一個異步程式設計模式,來提供友善和更有效的對線程的替代。GCD也為許多低級别的任務提供一個友善的選擇,例如讀和寫檔案描述符,實作定時器和監視信号和處理事件。

In-App Purchase(應用内購買)

      In-App Purchase 提供在應用中銷售應用特定的内容和服務以及來自iTunes的内容的能力。

       這個功能使用StoreKit架構實作,并提供使用使用者的iTunes賬号來處理金融方面的事務需要的基礎。

     應用處理全部使用者體驗和供購買的内容及可獲得服務的呈現。作為可下載下傳的内容,你能把可下載下傳的内容放到你自己的伺服器或使用蘋果的伺服器。

SQLite

       SQLite庫讓你在你的應用中嵌入一個輕量級的sql資料庫,而不需要運作一個分離的遠端資料庫服務程序。從你的應用,你能建立本地資料庫檔案,管理資料庫表和表中的資料記錄。

      SQLite庫為通用功能使用設計,但已經被優化來提供對資料記錄更快速的存取。

XML Support

       Foundation架構提供一個NSXMLParser類用來從一個xml文檔中引出元素。

      操作xml内容的額外的支援由libxml2庫提供支援。libxml2開源庫讓你快速地分析或寫任意的xml資料和轉換xml内容到html.

3.2 Core Services Frameworks(核心服務架構)

     Core Services Frameworks包含下面的一些架構。

     1)、Accounts Framework(帳戶架構)

      Accounts架構 (Accounts.framework)為确定的使用者賬号提供單點登入模式。

      單點登入通過消除使用者分離的多個賬号需要的多次登入提示,來增強使用者體驗。它也通過為應用管理賬号認證過程來簡化開發模式。

     該架構需要與Social架構配合使用。

    2)Address Book Framework(位址本架構)

        AddressBook 架構(AddressBook.framework)提供可程式設計存取使用者的聯系人資料庫的方式。

        如果應用使用聯系人資訊,你能使用該架構來存取和修改聯系人資訊。例如一個聊天應用可以使用該架構來引出可能的聯系人清單,通過聯系人清單來啟動一個會話以及在特定視圖顯示那些聯系人。

        重要提示:存取使用者的聯系人資料需要使用者的明确的許可。應用是以必須準備好使用者拒絕存取的情形。應用也鼓勵提供Info.plist鍵來描述需要存取的原因。

  3)Ad Support Framework(廣告支援架構)

       AdSupport 架構 (AdSupport.framework)提供存取應用用于廣告功能的一個辨別。

       該架構也提供一個訓示使用者是否選擇廣告跟蹤的标志。應用在試圖存取廣告辨別前需要度和判斷這個标志。

 4)CFNetwork 架構

       CFNetwork架構 (CFNetwork.framework)是高性能的使用面向對象對網絡協定進行抽象的一組C-based接口。這些抽象提供對協定棧細節的控制,使它容易使用低級别的構造例如BSDsockets。

       你能使用該架構簡化與ftp或http伺服器通訊或決定dnshosts的任務。使用CFNetwork 架構,你能:

1、使用BSD sockets。

2、使用SSL或TLS建立安全連接配接。

3、決定dnshosts。

4、與HTTP伺服器、認證HTTP伺服器、HTTPS伺服器互動。

5、與FTP伺服器互動。

6、釋出、解決和浏覽Bonjour服務。

               CFNetwork實體和理論上基于BSD sockets。

        5)Core Data 架構

                CoreData 架構 (CoreData.framework)架構是管理MVC應用中的資料模式的一種技術。

        CoreData架構打算在資料模式是高結構化的應用中使用。

      代替程式設計定義資料結構,在xcode中能夠使用圖形工具來建立一個表現你的資料模式的綱要。在運作時,你的資料模式實體的執行個體通過CoreData架構被建立、管理和獲得。

           通過為你的應用管理其資料模式,CoreData大大減少了必須書寫的代碼量。CoreData也提供如下功能:

1、為優化性能在SQLite資料庫中存儲對象資料; 

2、一個管理資料表視圖結果的 NSFetchedResultsController類;

3、對基本的文本編輯之外的undo/redo的管理;

4、支援屬性值的校驗;

5、支援傳播改變確定對象之間的關系保持一緻性;

6、支援分組、過濾和在記憶體中優化資料。

如果你開始開發一個新應用或計劃對已有應用進行大的更新,應該考慮使用CoreData。

6)Core Foundation 架構

      CoreFoundation 架構 (CoreFoundation.framework)是一組C-based接口,為ios應用提供基本的資料管理和服務功能。該架構包括如下支援:

    1.   集合資料類型(數組、集合等等);
    2.   應用打包Bundles;
    3. 字元串管理;
    4. 日期和時間管理
    5. 原始資料塊管理
    6. Preferences管理;
    7. URL和流操作;
    8. 線程
   9、端口和socket通訊。

      CoreFoundation架構與Foundation架構緊密相關,為相同的基本功能提供Objective-C接口。

        當你需要混合使用Foundation對象和Core Foundation類型時,你能利用兩個架構之間存在的“toll-freebridging”。toll-free bridging”意味着你能可交換地在兩個架構的方法和功能中使用一些CoreFoundation和Foundation類型。這個支援對許多資料類型可用,包括集合和字元串資料類型。

        每個架構的類和類型描述聲明一個對象是否是toll-freebridged以及在是的情況下來辨別它連接配接到什麼對象。

7)Core Location 核心位置架構

            CoreLocation 架構  (CoreLocation.framework)為應用提供位置資訊。該架構使用闆上的GPS、蜂窩、或者Wi-Fi來定位使用者的目前經度和緯度。

           你可在你的應用中內建該技術為使用者提供位置資訊。例如,你可實作一個基于使用者的目前位置搜尋附近餐館、商店或者銀行的應用。CoreLocation架構也提供如下能力:

          1) 在包括磁力計的ios裝置上存取羅盤資訊;

          2) 基于地理位置或藍牙beacon進行區域監視;

          3) 支援使用蜂窩基站的低耗電的位置監視;

          4)與MapKit配合來增強在特定情景下的位置資料的品質,例如開車時。

8)Core Media Framework(核心媒體架構)

      CoreMedia 架構(CoreMedia.framework)提供由AV Foundation架構使用的低級别的媒體類型。大多數應用從不需要使用該架構,但少數需要更精确控制音視訊内容建立和呈現的開發者可以使用它。

9)Core Motion Framework (核心運動架構)

         CoreMotion 架構 (CoreMotion.framework)提供一組接口來存取裝置上可獲得的運動資料。

       該架構支援使用一組新的block-based接口來存取原始和加工過的加速度計資料。對于帶有陀螺儀的裝置,你也能獲得原始的陀螺儀資料和加工過的反應裝置方向和旋轉速度的資料。

         你能在遊戲或其它使用運動作為輸入或作為增強使用者體驗的方式的應用中使用加速度計和陀螺儀兩種資料。對于帶有計步硬體的裝置,你能存取它的資料來跟蹤健康相關的運動。

10)Core Telephony Framework(核心電話架構)

        CoreTelephony 架構 (CoreTelephony.framework)提供與蜂窩電話的通話相關的資訊互動的接口。

        可以使用該架構來獲得使用者的蜂窩服務提供者的資訊。對于對蜂窩call事件感興趣的應用例如VoIP應用也能在那些事件出現時被通知。

11)Event Kit 架構

                EventKit 架構 (EventKit.framework)提供存取使用者裝置上的月曆事件的接口。能夠使用該架構來做如下事情:

         1) 獲得使用者月曆上存在的事件和提示;

        2)增加事件到使用者月曆;

        3)為使用者建立提示和使它們出現在提示應用中;

       4)為月曆事件配置提示信号,包括設定提示信号應該什麼時候觸發的規則。       

     重要提示:存取使用者的月曆和提示資料需要使用者的明确許可。應用是以必須準備好使用者拒絕的情形,也鼓勵應用在其Info.plist檔案中提供一個描述需要存取原因的鍵。

12)Foundation架構

          Foundation架構 (Foundation.framework)提供Core Foundation架構提供的許多功能的Objective-C封裝。該架構提供如下功能的支援:

    1.   集合資料類型(數組、集合等等);
    2.   應用打包Bundles;
    3. 字元串管理;
    4. 日期和時間管理
    5. 原始資料塊管理
    6. Preferences管理;
    7. URL和流操作;
    8. 線程和運作環;
    9. Bonjour;
    10.  通訊端口管理;
    11.  國際化;
    12. 規則表達式比對;
    13. Cache支援。

13)JavaScript  核心 架構

       JavaScriptCore 架構 (JavaScriptCore.framework)為許多标準的javascript對象提供Objective-C語言的封裝。使用該架構來執行JavaScript代碼和分析JSON資料。

14)Mobile Core Services (移動核心服務架構)

       MobileCore Services 架構(MobileCoreServices.framework)定義在通用類型辨別符(UTIs)中使用的低級别類型。

15)Multipeer Connectivity Framework(多方連接配接架構)

       MultipeerConnectivity 架構 (MultipeerConnectivity.framework)支援附近裝置的發現,并與那些裝置直接通訊(不需要Internet連接配接)。

       使用該架構能夠與附近裝置通訊、容易的建立多人會話、支援可靠地傳輸順序和實時資料。

       該架構為發現和管理網絡服務提供可程式設計和UI-based的選項。應用能在ui中內建MCBrowserViewController類來顯示一個發現裝置清單讓使用者選擇。另外也能使用MCNearbyServiceBrowser類來可程式設計的查找和管理對方裝置。

16)Newsstand Kit 架構

     Newsstand應用為使用者提供了一個閱讀雜志和報紙的中心位置。想通過Newsstand提供雜志和報紙内容的出版商能夠使用NewsstandKit 架構(NewsstandKit.framework)建立它們自己的iOS應用,讓使用者啟動新雜志和報紙新聞的背景下載下傳。在啟動下載下傳後,系統處理下載下傳操作和當内容可獲得時通知應用。

17)Pass Kit 架構

       Passbook應用為使用者提供了一個存儲訂貨單、登機卡、入場券和商業折扣卡的位置。代替實體攜帶這些東西,使用者現在能在IOS裝置上存儲它們,并和過去一樣的方式使用。

       Pass Kit 架構 (PassKit.framework)提供把這些功能內建到你的應用的Objective-C接口。

      你能與web接口和檔案格式資訊組合使用該架構來建立和管理你們公司提供的電子入場券。

      電子入場券由你們公司的web service建立并通過email、Safari或定制的應用送出到使用者的裝置。電子入場券本身使用特殊的檔案格式,在送出之前被加密簽名。檔案格式辨別關于提供服務的相關資訊以及使用者知道是什麼服務的資訊。

         電子入場券也可以包含一個對卡進行校驗的條碼或其它資訊,以便它能被兌換或使用。

18)Quick Look 架構

       QuickLook 架構(QuickLook.framework)提供了一個預覽應用不直接支援的檔案内容的接口。

        該架構主要打算用于應用從網絡下載下傳檔案或處理來自不知道來源的檔案的工作。

       在得到檔案後,你能使用該架構提供的視圖控制器來直接顯示檔案的内容。

19)Safari Services 架構

     SafariServices 架構 (SafariServices.framework)提供以可程式設計的方式增加URLs到使用者的Safari的書簽的支援。

20)Social Framework(社交架構)

      Social架構(Social.framework)提供一個簡單的接口來存取使用者的社交媒體賬号。

      該架構取代Twitter架構并增加了其它社交賬号,包括Facebook、Sina微網誌以及其它。

      應用能使用該架構送出狀态更新和圖像到使用者賬号。該架構與Accounts架構一起為使用者提供單點登入并确儲存取的使用者賬号是經過準許的。

21)Store Kit 架構

       StoreKit 架構 (StoreKit.framework)提供在ios應用中購買内容和服務的支援,也被稱作應用内購買。

       例如,你能使用該功能來允許使用者去鎖另外的應用功能。或者如果你是一名遊戲開發者,你能使用它來提供另外的遊戲級别。在這兩種情況,StoreKit架構處理事務的收入方面事務,包括通過使用者的iTunes賬号處理付費請求,給應用提供關于購買的資訊。

        Store Kit聚集在事務的金融方面,確定事務正确和安全。你的應用處理事務的其它方面,包括購買接口的呈現和适當内容的下載下傳(去鎖)。

         工作的分工讓你能夠控制購買内容的使用者體驗。由你決定你想呈現給使用者什麼樣的購買接口和什麼時候那樣做,你也決定你的應用最好的送出機制。

22)System Configuration Framework(系統配置架構)

       SystemConfiguration 架構(SystemConfiguration.framework)提供可達性接口,你能用它來确定裝置的網絡配置,也能使用該架構确定一個Wi-Fi或蜂窩連接配接是否在用以及一個特定的主機伺服器是否能夠存取。

四   Core OS Layer(核心OS層)

        CoreOS層包含其它大多數技術建在其之上的低級别的功能。雖然應用不直接使用這些技術,它們被其它架構使用。在需要顯而易見的處理安全或與外設通訊的情形,你也能使用該層提供的架構。

4.1  Core OS包含的架構:

1)Accelerate 加速架構

   Accelerate架構 (Accelerate.framework)包含執行數字信号處理、線性代數、圖像處理計算的接口。

   使用該架構的優點是它們針對所有的ios裝置上存在的硬體配置做了優化,是以你能寫一次代碼確定在所有裝置上有效運作。

2)Core Bluetooth Framework(核心藍牙架構)

CoreBluetooth 架構 (CoreBluetooth.framework)允許開發者與藍牙低耗電外設(LE)互動。

使用該架構的Objective-C接口能夠完成如下工作:

           1、掃描藍牙外設,連接配接和斷開發現的藍牙外設;

           2、聲明應用的服務,轉換ios 裝置成其它藍牙裝置的外設;

           3、 從IOS裝置廣播iBeacon資訊;

     4、儲存你的藍牙連接配接的狀态,當應用重新啟動時恢複那些連接配接;

          5、藍牙外設可獲得性變化時獲得通知。

3)External Accessory Framework(外部附件架構)

       ExternalAccessory 架構(ExternalAccessory.framework)提供與連接配接到IOS裝置的硬體附件通訊的支援。

      附件能通過30-pin連接配接器或使用藍牙無線與IOS裝置進行連接配接。該架構給你提供了獲得關于每一個可獲得的附件資訊和啟動通訊會話的方式。然後,你可自由的使用附件支援的指令直接操作附件。

4)Generic Security Services Framework(通用安全服務架構)

      GenericSecurity Services 架構 (GSS.framework)給ios應用提供一組标準安全相關的服務。該架構的基本接口規定在IETFRFC2743 andRFC4401。除了提供标準的接口,IOS還包括一些沒有在标準中規定但被許多應用需要的一些管理證書需要的額外東西。

5)Security Framework(安全架構)

      除了内建的安全功能,IOS也提供了一個明确的安全架構(Security.framework),你能用它來保證應用管理的資料的安全。

      該架構提供管理證書、公有和私有key和信任政策的接口。支援産生加密安全僞随機碼。它也支援在keychain(儲存敏感使用者資料的安全倉庫)中儲存證書和加密key。

      公共加密庫提供對稱加密、hash認證編碼(HMACs)、數字簽名等額外支援,數字簽名功能本質上與iOS上沒有的OpenSSL庫相容。

     在你建立的多個應用之間共享keychain是可能的。共享使它容易在相同的一套應用之間更平滑的協作。例如,你能使用該功能來共享使用者密碼或其它元素,否則可能使每個應用都需要提示使用者。

     為了在應用之間共享資料,必須為每個應用的Xcode工程配置适當的權限。

6)System

      System級包含kernel環境、驅動以及作業系統級别的unix接口。kernel本身負責作業系統的每一個方面:如虛拟記憶體管理、線程、檔案系統、網絡和互聯通信。在該層的驅動也提供在可獲得的硬體與系統架構之間的接口。為了安全,對kernel和驅動的存取被限制到一組有限的系統架構和應用。

    IOS提供一組存取許多作業系統低級别功能的接口。應用通過LibSystem庫存取這些功能。該C based的接口提供如下功能的支援:

           1) 多任務(POSIX線程和GCD)

           2) 網絡(BSDsockets)

           3) 檔案系統存取

           4) 标準I/O

           5) Bonjour和DNS服務

           6)  位置資訊

           7)  記憶體配置設定

           8) 數學計算

7) 64-Bit Support

      IOS原先是為32-bit架構的裝置設計的。自iOS 7,開始支援在64-bit進行編譯、連結和調試。所有的系統庫和架構是支援64位的,意味着它們能在32-bit和64-bit應用中使用。當以64-bit運作時編譯時,應用可能運作的更快,因為在64-bit模式可以獲得額外的處理器資源。

      iOS使用OS X和其它64-bitUNIX系統使用的LP64模式,意味着在這些系統移植時不會碰到太頭疼的事。

最後說下uikit架構 看圖

iOS所有架構-Cocoatouch等

原文連結http://blog.csdn.net/iukey/article/details/7666430 http://blog.csdn.net/hdfqq188816190/article/details/50725314

繼續閱讀