6轉(zhuǎn)載-->>?IOS框架和服務(wù)
在iOS中框架是一個(gè)目錄,包含了共享資源庫(kù),用于訪問該資源庫(kù)中儲(chǔ)存的代碼的頭文件,以及圖像、聲音文件等其他資源。共享資源庫(kù)定義應(yīng)用程序可以調(diào)用的函數(shù)和方法。
iOS為應(yīng)用程序開發(fā)提供了許多可使用的框架,并構(gòu)成IOS操作系統(tǒng)的層次架構(gòu),分為四層,從上到下依次為:Cocoa Touch Layer(觸摸UI層)、MediaLayer(媒體層)、Core Services Layer(核心服務(wù)層)、Core OS Layer(核心OS層)。
低層次框架提供IOS的基本服務(wù)和技術(shù),高層次框架建立在低層次框架之上用來提供更加復(fù)雜的服務(wù)和技術(shù),較高級(jí)的框架向較低級(jí)的結(jié)構(gòu)提供面向?qū)ο蟮某橄蟆?/p>
在開發(fā)應(yīng)用時(shí)應(yīng)盡可能使用較高級(jí)的框架。如果要開發(fā)的國(guó)內(nèi)在高層框架中沒有提供,你也可以使用較低層框架和技術(shù)。
Foundation和UIKit框架是應(yīng)用編程用到的兩個(gè)主要的框架,能夠滿足大多數(shù)應(yīng)用程序的開發(fā)需求。
UIKit框架提供的類,用于創(chuàng)建基于觸摸的用戶界面。所有iOS應(yīng)用程序都是基于UIKit,沒有這個(gè)框架,就無(wú)法交付應(yīng)用程序。UIKit提供應(yīng)用程序的基礎(chǔ)架構(gòu),用于在屏幕上繪圖、處理事件,以及創(chuàng)建通用用戶界面及其中元素。UIKit還通過管理屏幕上顯示的內(nèi)容,來組織應(yīng)用程序。
Foundation框架為所有應(yīng)用程序提供基本的系統(tǒng)服務(wù)。應(yīng)用程序以及UIKit和其他框架,都是建立在Foundation框架的基礎(chǔ)結(jié)構(gòu)之上。Foundation框架提供許多基本的對(duì)象類和數(shù)據(jù)類型,使其成為應(yīng)用程序開發(fā)的基礎(chǔ)。它還制定了一些約定(如用于取消分配等任務(wù)),使代碼更加一致,可復(fù)用性更好。
整個(gè)框架架構(gòu)圖如下:
一Cocoa Touch Layer(觸摸UI層)
CocoaTouch Layer包含創(chuàng)建ios應(yīng)用關(guān)鍵的框架。該層包含的框架定義應(yīng)用的外觀,也提供基本的應(yīng)用基礎(chǔ)和關(guān)鍵的技術(shù)支持,例如多任務(wù)、觸摸輸入、推送通知和許多其它的高級(jí)系統(tǒng)服務(wù)。在開發(fā)應(yīng)用時(shí),應(yīng)當(dāng)首先研究該層的技術(shù)和技術(shù)看是否能夠滿足需要。
1.1 Cocoa Touch Layer包含如下關(guān)鍵技術(shù)
1).AirDrop
AirDrop允許用戶與附近設(shè)備共享圖片、文檔、urls鏈接以及其它種類的數(shù)據(jù)。
2)、Text Kit
TextKit是處理文本和排版的一個(gè)全功能、高級(jí)別的類集合。使用Text Kit你能在段落、列或者頁(yè)上對(duì)帶有風(fēng)格的文本進(jìn)行布局;也能在任意區(qū)域(如圖形)周圍布局流動(dòng)的文本;還能用它來管理多種字體。
開發(fā)應(yīng)用時(shí)應(yīng)該首先考慮使用Text Kit來進(jìn)行文本呈現(xiàn),而不是Core Text。Text Kit與所有UIKit中的基于文本的控制集成允許應(yīng)用更容易地創(chuàng)建、編輯、顯示和存儲(chǔ)文本。
3)、UIKit Dynamics
UIKit dynamics用來為符合UIDynamicItem協(xié)議的UIView對(duì)象或其它對(duì)象規(guī)定動(dòng)畫行為。通過在應(yīng)用的UI中集成真實(shí)世界行為和特性進(jìn),動(dòng)畫行為為應(yīng)用提供了一種增強(qiáng)用戶體驗(yàn)的方式。
4)、Multitasking
在ios中多任務(wù)用來設(shè)計(jì)來使電池使用時(shí)間最大化。
5)、Auto Layout
自動(dòng)布局幫助你使用非常少的代碼來建立動(dòng)態(tài)接口。
使用AutoLayout定義如何在用戶接口上布局元素的規(guī)則,這些規(guī)則表達(dá)了視圖類之間的關(guān)系,如規(guī)定一個(gè)按鈕總是處于它的父窗口的左邊緣20個(gè)點(diǎn)。
在Auto Layout中使用的實(shí)體是被稱為constraints的Objective-C對(duì)象。
6)、Storyboards
串聯(lián)圖 是設(shè)計(jì)應(yīng)用用戶接口的推薦方式。串聯(lián)圖讓你在一個(gè)地方就能夠設(shè)計(jì)全部的用戶接口,方便在一個(gè)位置看到所有的視圖和視圖控制器以及理解它們是如何一起工作的。串聯(lián)圖的一個(gè)重要的部分是定義segues(segues是從一個(gè)視圖控制器到另一個(gè)的轉(zhuǎn)換)。這些轉(zhuǎn)換代表用戶接口之間的交互。你可以使用XCOE來可視的定義這些轉(zhuǎn)換或者通過編程啟動(dòng)它們。
你能使用一個(gè)單串聯(lián)圖文件來存儲(chǔ)所有的應(yīng)用視圖控制器和視圖,或者使用多個(gè)視圖串聯(lián)圖文件來組織用戶接口。
在應(yīng)用建立時(shí)間,Xcode讀取串聯(lián)圖文件的內(nèi)容并把它分成多個(gè)能獨(dú)立加載的離散的片斷,以便獲得更好的性能。UIKit框架提供了相應(yīng)的類來從程序中存取一個(gè)串聯(lián)圖的內(nèi)容。
7)、UI State Preservation
UI狀態(tài)保存能夠使應(yīng)用表現(xiàn)的一直運(yùn)行,從而為用戶提供無(wú)縫的體驗(yàn)。如果系統(tǒng)遇到內(nèi)存壓力,系統(tǒng)可能安靜地強(qiáng)制停止一個(gè)或多個(gè)后臺(tái)應(yīng)用。
當(dāng)應(yīng)用從前臺(tái)移到后臺(tái)時(shí),該服務(wù)能保存應(yīng)用的視圖和視圖控制器的狀態(tài)。在下次應(yīng)用重新啟動(dòng)時(shí),能夠使用先前保存的狀態(tài)信息來恢復(fù)視圖和視圖控制器到它們先前的配置,使應(yīng)用表現(xiàn)得好像一直在運(yùn)行。
8)、Apple Push Notification Service
蘋果的推送通知服務(wù)提供了一種提示用戶關(guān)于新信息的方式,即使應(yīng)用當(dāng)前不在激活運(yùn)行狀態(tài)。
使用該服務(wù),你能推送文本通知,在應(yīng)用圖標(biāo)上增加一個(gè)標(biāo)記或者在任意時(shí)間觸發(fā)聲音提示。
這些消息讓用戶知道他們應(yīng)該打開應(yīng)用來接收相關(guān)信息。自Ios7開始,你甚至能推送無(wú)聲的通知來讓應(yīng)用知道有了新的內(nèi)容可以下載。
為了使用IOS應(yīng)用的推送通知,用戶需要做兩部分的工作。首先應(yīng)用必須登記該通知服務(wù)以及在通知被提交時(shí)處理相關(guān)的通知數(shù)據(jù)。第二,你必須提供一個(gè)服務(wù)端的進(jìn)程來產(chǎn)生通知。
服務(wù)端的進(jìn)程可以使用你自己的本地服務(wù)器或者使用蘋果的推送通知服務(wù)。
9)、Local Notifications
本地通知作為推送通知機(jī)制的補(bǔ)充,可以給應(yīng)用提供一種不依賴外部服務(wù)器產(chǎn)生本地通知的方式。
運(yùn)行在后頭的應(yīng)用能使用本地通知作為當(dāng)重要的事件發(fā)生時(shí)引起用戶注意的一種方式。例如,運(yùn)行在后臺(tái)的導(dǎo)航應(yīng)用能使用本地通知來提示用戶什么時(shí)間該轉(zhuǎn)彎了。
應(yīng)用也能調(diào)度本地通知在將來的時(shí)間提交以及使那些通知在應(yīng)用不運(yùn)行也能被提交。
本地通知的一個(gè)優(yōu)點(diǎn)是它們與你的應(yīng)用是獨(dú)立的。在一個(gè)通知已被調(diào)度,系統(tǒng)管理它的提交。另外當(dāng)通知被提交時(shí)你的應(yīng)用甚至不必運(yùn)行。
10)、Gesture Recognizers
手勢(shì)識(shí)別用來檢測(cè)通常類型的手勢(shì)。由于手勢(shì)識(shí)別使用與系統(tǒng)檢測(cè)手勢(shì)相同的試探方法,因此手勢(shì)識(shí)別為應(yīng)用提供了一個(gè)一致的行為。為了使用它,你能在你的視圖上附加手勢(shì)識(shí)別功能和并給它提供一個(gè)在手勢(shì)出現(xiàn)時(shí)要執(zhí)行的方法。
手勢(shì)識(shí)別跟蹤原始的觸摸事件和確定它們什么時(shí)候與想要的手勢(shì)匹配。
11)、System View Controllers
許多系統(tǒng)框架為標(biāo)準(zhǔn)的系統(tǒng)接口定義了視圖控制器。只要有可能,為了呈現(xiàn)一致的用戶體驗(yàn),就應(yīng)該使用系統(tǒng)提供的視圖控制器而不是創(chuàng)建一個(gè)新的。
2.2 Cocoa Touch層框架
CoCoa Touch層包含如下框架:
1、Address Book UI Framework(地址本UI框架)
該框架提供一個(gè)面向?qū)ο蟮木幊探涌?。用來顯示標(biāo)準(zhǔn)的系統(tǒng)接口,來創(chuàng)建新的聯(lián)系人和編輯和選擇已存在的聯(lián)系人。
2、Event Kit UI Framework(月歷事件UI框架)
該框架提供一個(gè)視圖控制器來呈現(xiàn)標(biāo)準(zhǔn)的系統(tǒng)接口,來觀察和編輯月歷相關(guān)的事件。EventKit UI Framework基于Event Kit framework框架。
3、Game Kit Framework(游戲工具框架)
該框架實(shí)現(xiàn)對(duì)游戲中心的支持,讓用戶能夠在線共享他們的游戲相關(guān)的信息。
4、iAd Framework(iAD框架)
該框架用來在應(yīng)用中提供廣告條。
當(dāng)你想要顯示廣告時(shí),廣告條與用戶UI上的標(biāo)準(zhǔn)的視圖進(jìn)行合并。
這些視圖與蘋果的iAd服務(wù)一起工作,自動(dòng)處理、加載和呈現(xiàn)富媒體廣告以及應(yīng)答在那些廣告條上的點(diǎn)擊等所有相關(guān)的工作。
5、Map Kit Framework(地圖工具框架)
MapKit提供與應(yīng)用的UI組合的一個(gè)可滾動(dòng)的地圖。
除了顯示一個(gè)地圖,你能使用該框架接口來定制地圖的內(nèi)容和外觀,也能使用注解來標(biāo)記感興趣的點(diǎn),也能使用定制的內(nèi)容來與地圖內(nèi)容疊置。例如,你可以在地圖上來畫一條公交路線,或者使用注解來高亮顯示附近的商店和餐館。
除了顯示地圖,MapKit框架還能與地圖應(yīng)用以及蘋果的地圖服務(wù)器集成來為用戶指引方向。
地圖應(yīng)用能夠給任意支持方向的應(yīng)用提供方向的代理。如提供特定類型方向的應(yīng)用,例如一個(gè)顯示地鐵路線的應(yīng)用,能登記請(qǐng)求接收地圖應(yīng)用提供的方向。
應(yīng)用也能向蘋果的服務(wù)器請(qǐng)求步行或駕駛方向,并與他們定制的方向的路徑信息混合來為用戶提供完整的點(diǎn)到點(diǎn)體驗(yàn)。
6、Message UI Framework( 消息UI框架)
該框架用來在應(yīng)用中提供編輯郵件和sms消息的支持。
編輯支持包括一個(gè)呈現(xiàn)到你的應(yīng)用的視圖控制器接口,并能設(shè)置這個(gè)視圖控制器的一些區(qū)域,如接收人、主題、郵件主體和郵件想包括的任意附件。
在呈現(xiàn)視圖控制器后,也能為用戶提供一個(gè)在發(fā)送郵件之前可以編輯郵件的選項(xiàng)。
7、UIKit Framework
該框架提供實(shí)現(xiàn)圖形和事件驅(qū)動(dòng)的應(yīng)用的至關(guān)重要的基礎(chǔ)。包括:
1、基本的應(yīng)用管理和基礎(chǔ)設(shè)施,包括應(yīng)用的主循環(huán);
2、用戶接口管理,包括對(duì)storyboards和nib文件的支持;
3、一個(gè)用來封裝用戶UI內(nèi)容的視圖控制器模式;
4、?標(biāo)準(zhǔn)系統(tǒng)視圖和控制對(duì)象;
5、提供處理觸摸和運(yùn)動(dòng)事件的支持;
6、支持包括與iCloud集成功能的文檔模式;
7、?圖形和窗口支持,包括支持外部顯示器;
8、多任務(wù)支持;
9、打印支持;
10、?定制標(biāo)準(zhǔn)UIKit控制的外觀;
11、支持文本和web內(nèi)容;
12、剪切、復(fù)制、粘貼的支持;
13、支持動(dòng)畫UI;
14、通過url語(yǔ)義和框架接口與系統(tǒng)提供的其它應(yīng)用集成的能力;
15、對(duì)有障礙用戶的可存取性的支持;
16、支持ApplePush Notification服務(wù);
17、本地通知調(diào)度和提交;
18、pdf 創(chuàng)建;
19、支持定制像系統(tǒng)鍵盤行為一樣的用戶輸入視圖;
20、支持創(chuàng)建與系統(tǒng)鍵盤交互的定制的文本視圖;
21、支持通過email,Twitter, Facebook和其它服務(wù)共享內(nèi)容。
也支持一些設(shè)備特定功能的集成,例如
1、內(nèi)建的攝像機(jī);
2、用戶的圖片庫(kù);
3、設(shè)備名和模式信息;
4、電池狀態(tài)信息;
5、接近傳感器信息;
6、來自附件耳機(jī)的遠(yuǎn)程控制信息
二、MediaLayer(媒體層)
媒體層包含在應(yīng)用中實(shí)現(xiàn)多媒體體驗(yàn)的圖形、聲音、視頻技術(shù)和框架。使用這層的技術(shù)可以使你容易的建立更加好看和好聽的應(yīng)用。
2.1 包含的關(guān)鍵技術(shù)
2.1.1 圖形技術(shù)
高質(zhì)量的圖形是所有應(yīng)用的重要的組成部分。IOS提供了許多幫助你定制藝術(shù)和圖形屏幕的技術(shù)。IOS圖形技術(shù)為其提供了廣泛的支持,并可以與UIKit視圖架構(gòu)無(wú)縫工作。
你能使用標(biāo)準(zhǔn)的視圖來快速提交高質(zhì)量的接口,或者使用本層的圖形技術(shù)創(chuàng)建你自己的定制視圖來提交一個(gè)更加豐富的圖形體驗(yàn)。
1)、UIKit graphics
UIKit定義的繪制圖像和Bézier路徑,以及動(dòng)畫視圖內(nèi)容的高級(jí)別技術(shù)。
UIKit視圖提供快速和有效的方式來呈現(xiàn)圖像和文本內(nèi)容。
UIKIT視圖也能通過顯示和使用UIKitdynamics技術(shù)進(jìn)行動(dòng)畫,并為用戶提供反饋,促進(jìn)用戶交互。
2)、CoreGraphics 框架
CoreGraphics也稱作Quartz,是對(duì)定制的2D向量和圖像呈現(xiàn)提供支持的本地繪制引擎。
該框架提供的引擎雖然沒有OpenGLES引擎速度快,但該框架能夠很好地適合于呈現(xiàn)定制的2d圖形和動(dòng)態(tài)圖像。
3)、CoreAnimation框架
CoreAnimation也是Quartz核心框架的一部分,是優(yōu)化應(yīng)用動(dòng)畫體驗(yàn)的基礎(chǔ)技術(shù)。
UIKit視圖基于?Core Animation提供視圖級(jí)別的動(dòng)畫支持。
當(dāng)你想對(duì)動(dòng)畫行為有更多控制時(shí)也能直接使用CoreAnimation。
4)、Core Image
CoreImage提供非破壞的方式操作視頻和靜態(tài)圖像。
5)、OpenGL ES及GLKit
OpenGLES使用硬件加速接口來處理先進(jìn)的2d 和3d 呈現(xiàn)。OpenGLES通常由游戲開發(fā)者或想實(shí)現(xiàn)沉浸式圖像體驗(yàn)的開發(fā)者使用。
OpenGLES框架提供對(duì)呈現(xiàn)過程的全部控制,以及提供創(chuàng)建平滑動(dòng)畫所需要的幀速。
GLKit是一組Objective-C類,以便能夠使用面向?qū)ο蠼涌趤硖峁㎡penGL ES的強(qiáng)大能力。
6)、Text Kit和CoreText
Text Kit是UIKit框架的家族,用來來執(zhí)行最好的排面和文本管理。如果你的應(yīng)用實(shí)現(xiàn)先進(jìn)的文本操作,Text Kit提供與應(yīng)用視圖的無(wú)縫集成。
CoreText是處理先進(jìn)排面和布局的低級(jí)別的c語(yǔ)言框架。
7)、Image I/O
ImageI/O提供讀寫大多數(shù)圖像格式的接口。
8)、Assets Library
AssetsLibrary框架讓你存取用戶的圖片、視頻和媒體。
你想在應(yīng)用中集成用戶自己的內(nèi)容時(shí)可以使用該框架。
2.1.2 聲音技術(shù)
聲音技術(shù)工作于底層硬件之上,為用戶提供更加豐富的聲音體驗(yàn)。這些體驗(yàn)包括播放和記錄高質(zhì)量的聲音、處理MIDI內(nèi)容以及使用設(shè)備內(nèi)建的聲音 等能力,
1). Media Player framework
該框架是一個(gè)高級(jí)別的框架, 用來為用戶提供對(duì)iTunes庫(kù)存取的容易方式,也提供對(duì)播放軌跡和播放列表的支持。
當(dāng)你想快速在應(yīng)用中集成聲音以及不需要控制播放行為時(shí)可以使用該框架。
2)、AV Foundation
AVFoundation是管理聲音以及視頻播放和記錄的面向?qū)ο蠼涌凇?/p>
在記錄聲音和想對(duì)聲音播放過程有更好的控制時(shí)可以使用該框架。
3)、OpenAL
OpenAL是一個(gè)提供位置音效的跨平臺(tái)的工業(yè)標(biāo)準(zhǔn)技術(shù)和接口。
游戲開發(fā)者經(jīng)常使用該技術(shù)來提供高質(zhì)量的聲音。
4)、Core Audio
Core Audio是一組簡(jiǎn)單和智能的接口來記錄和播放聲音以及MIDI內(nèi)容。
在需要對(duì)聲音有更好控制時(shí)使用該框架。
2.1.3??視頻技術(shù)
視頻技術(shù)提供管理應(yīng)用中的靜態(tài)視頻內(nèi)容或者播放來自Internet的視頻流的支持。
對(duì)于帶有適當(dāng)?shù)挠涗浻布脑O(shè)備,該框架還能夠記錄視頻以及與應(yīng)用進(jìn)行集成。
1).UIImagePickerController
UIImagePickerController是一個(gè)選擇用戶媒體文件的UIKit視圖控制器。
2)、Media Player
MediaPlayer框架提供一組呈現(xiàn)視頻內(nèi)容的簡(jiǎn)單易用的接口,該框架支持全屏和小窗口視頻播放,也為用戶提供可選的播放控制。
3)、AVFoundation
AVFoundation提供先進(jìn)的視頻播放和記錄能力。
在需要對(duì)視頻呈現(xiàn)和記錄有更多的控制時(shí)使用該框架,例如在實(shí)時(shí)應(yīng)用中分層顯示實(shí)時(shí)視頻和應(yīng)用提供的其它內(nèi)容。
4)、CoreMedia
CoreMedia框架為操作媒體定義低級(jí)別的數(shù)據(jù)類型和接口。
當(dāng)你需要對(duì)視頻內(nèi)容有無(wú)比的控制時(shí)可以使用該框架。
2.1.4??AirPlay技術(shù)
AirPlay讓應(yīng)用串流聲音和視頻內(nèi)容到Apple TV或者串流聲音內(nèi)容到第三方揚(yáng)聲器和接收器。
AirPlay內(nèi)建于許多框架,包括UIKit、Media Player、AVFoundation、Core Audio。因此在大多數(shù)情況你不需要為了支持它做任何事。在使用那些框架時(shí),當(dāng)播放內(nèi)容時(shí)自動(dòng)獲得AirPlay支持。當(dāng)用戶選擇使用AirPlay播放內(nèi)容時(shí)系統(tǒng)自動(dòng)進(jìn)行路由。
2.2包含的框架
MediaLayer提供如下框架和服務(wù)。
2.2.1、Assets Library 框架
AssetsLibrary 框架(AssetsLibrary.framework)提供對(duì)用戶設(shè)備上圖片應(yīng)用管理的圖片和視頻的存取。
使用該框架來存取用戶保存的圖片相冊(cè)或?qū)氲皆O(shè)備的任意相冊(cè)中的圖片,你也能保存新的圖片和視頻到用戶的圖片相冊(cè)。
2.2.2、AV Foundation 框架
AVFoundation?框架 (AVFoundation.framework)提供一組播放、記錄和管理聲音和視頻內(nèi)容的Objective-C類。
當(dāng)你想在應(yīng)用的ui接口無(wú)縫集成媒體能力時(shí)使用該框架。
你也能使用它來進(jìn)行更先進(jìn)的媒體處理,例如同時(shí)播放多個(gè)聲音或者控制播放和記錄過程的多個(gè)方面。
該框架提供的服務(wù)包括:
1)聲音會(huì)話管理,包括對(duì)系統(tǒng)聲明你的應(yīng)用聲音能力;
2)對(duì)應(yīng)用媒體資源的管理;
3)對(duì)編輯媒體內(nèi)容的支持;
4)捕捉聲音和視頻的能力;
5)播放聲音和視頻的能力;
6)軌跡管理;
7)媒體元數(shù)據(jù)的管理;
8)立體拍攝;
9)聲音之間的精確同步;
10)提供一個(gè)確定聲音文件細(xì)節(jié)內(nèi)容的Objective-C接口,例如數(shù)據(jù)格式,采樣率,通道數(shù);
11)?通過AirPlay串流內(nèi)容。
2.2.3、Core Audio 框架
Core Audio是一個(gè)對(duì)聲音處理提供本地支持的框架家族。這些框架支持聲音的產(chǎn)生、記錄、混合和回放。你也能使用這些接口處理MIDI內(nèi)容以及串流聲音和MIDI內(nèi)容到其它應(yīng)用。
Core Audio框架包括如下框架:
CoreAudio.framework
定義Core Audio框架使用的所有數(shù)據(jù)類型。
AudioToolbox.framework
提供聲音文件和聲音流的播放和記錄服務(wù)。也提供管理聲音文件,播放系統(tǒng)警告聲音,在某些設(shè)備上觸發(fā)震動(dòng)的支持。
AudioUnit.framework
提供使用內(nèi)建聲音單元。也提供使你的應(yīng)用的聲音內(nèi)容作為對(duì)其它應(yīng)用可視的聲音組件的支持。
CoreMIDI.framework
提供與MIDI設(shè)備通訊的標(biāo)準(zhǔn)方式,包括硬件鍵盤和合成器。你使用這個(gè)框架來發(fā)送和接收MIDI消息以及與通過dock連接器或網(wǎng)絡(luò)連接到IOS設(shè)備的MIDI外設(shè)交互。
MediaToolbox.framework
提供對(duì)聲音tap接口的存取。
2.2.4、Core Graphics 框架
CoreGraphics.framework包含Quartz 2D繪制api。
Quartz是一個(gè)原先用在OS X的先進(jìn)的、向量繪制引擎。Quartz支持路徑繪制,抗鋸齒呈現(xiàn),剃度,圖像,顏色,坐標(biāo)空間轉(zhuǎn)換以及pdf 內(nèi)容創(chuàng)建、顯示和分析等功能。
雖然這個(gè)api是C-based接口,但它使用了面向?qū)ο蟪橄髞肀憩F(xiàn)基本的繪制對(duì)象,因此使它容易存儲(chǔ)和重用圖形內(nèi)容。
2.2.5、Core Image 框架
CoreImage 框架(CoreImage.framework)提供一組強(qiáng)大的內(nèi)建過濾器來操作視頻和靜態(tài)圖像。
你能在觸摸彈起、糾正圖片以及面部和特征檢測(cè)等許多方面使用這些內(nèi)建的過濾器。這些過濾器的先進(jìn)特點(diǎn)是它們操作在非破壞方式,即原先的圖像不被改變。
這些過濾器針對(duì)底層硬件進(jìn)行了優(yōu)化,因此它們是快速和有效的。
2.2.6、Core Text 框架
CoreText?框架 (CoreText.framework)提供一個(gè)對(duì)文本進(jìn)行布局和字體處理的簡(jiǎn)單的、高性能的C-based接口。
該框架用在不使用TextKit但仍想獲得在字處理應(yīng)用中發(fā)現(xiàn)的先進(jìn)文本處理能力。
該框架提供了一個(gè)智能的文本布局引擎,包括在其它內(nèi)容周圍環(huán)繞文本的能力,它也支持使用多種字體和呈現(xiàn)屬性的先進(jìn)的文本風(fēng)格。
2.2.7、Core Video 框架
CoreVideo 框架 (CoreVideo.framework)為Core Media框架提供緩沖和緩沖池支持。多數(shù)應(yīng)用從不直接使用該框架。
2.2.8、Game Controller 框架
GameController?框架 (GameController.framework)讓你在應(yīng)用中發(fā)現(xiàn)和配置針對(duì)iPhone/iPod/iPad設(shè)備的游戲控制器。
游戲控制器可以是物理連接到iOS設(shè)備或者是通過藍(lán)牙無(wú)線連接。GameController框架當(dāng)控制器可獲得時(shí)通知你的應(yīng)用讓應(yīng)用可以規(guī)定哪個(gè)控制器輸入與你的應(yīng)用相關(guān)。
2.2.9、GLKit 框架
GLKit框架 (GLKit.framework)包含一組簡(jiǎn)化創(chuàng)建OpenGLES應(yīng)用的Objective-C based 單元類。
GLKit支持應(yīng)用開發(fā)的四個(gè)關(guān)鍵領(lǐng)域
1)GLKView和GLKViewController類提供一個(gè)OpenGLES視圖和其呈現(xiàn)循環(huán)的標(biāo)準(zhǔn)實(shí)現(xiàn)。
OpenGLES視圖代表應(yīng)用管理底層的framebuffer對(duì)象。應(yīng)用只需在視圖上繪制。
2) GLKTextureLoader類提供在你的應(yīng)用中使用圖像轉(zhuǎn)換和加載線程,允許應(yīng)用自動(dòng)加載紋理圖像到應(yīng)用的上下文。
能夠異步或同步加載紋理。當(dāng)異步加載紋理時(shí),應(yīng)用應(yīng)提供一個(gè)完成處理塊,該處理塊在紋理加載進(jìn)應(yīng)用上下文時(shí)被調(diào)用。
3)GLKit框架提供向量、矩陣和3d 旋轉(zhuǎn)以及提供OpenGLES 1.1上的矩陣。
4)GLKBaseEffect,GLKSkyboxEffect,和GLKReflectionMapEffect類實(shí)現(xiàn)給通用圖形操作提供可配置的圖形著色。尤其GLKBaseEffect類實(shí)現(xiàn)了OpenGL ES 1.1規(guī)范上的光亮和材質(zhì)模式,簡(jiǎn)化了移植一個(gè)應(yīng)用從OpenGL ES 1.1到OpenGL ES最后版本的努力。
2.2.10、Image I/O 框架
ImageI/O 框架(ImageIO.framework)提供輸入和輸出圖像數(shù)據(jù)和圖像元數(shù)據(jù)的接口。
該框架利用CoreGraphics數(shù)據(jù)類型和功能,并支持在ios 上所有的可獲得的標(biāo)準(zhǔn)的圖像類型。你能使用這個(gè)框架存取Exif和IPTC元數(shù)據(jù)屬性。
2.2.11、Media Accessibility 框架
MediaAccessibility?框架 (MediaAccessibility.framework)管理媒體文件中closed-caption內(nèi)容的呈現(xiàn)。
該框架與新的設(shè)置配合工作可以讓用戶決定是否允許closed-caption顯示。
2.2.12、Media Player 框架
MediaPlayer 框架(MediaPlayer.framework)提供應(yīng)用中播放聲音和視頻的高級(jí)別支持。能夠使用該框架做如下工作:
1)?播放視頻到用戶屏幕或通過AirPlay到另外的設(shè)備屏幕。能夠全屏幕播放視頻或以可改變視圖大小的方式播放。
2)存取用戶的iTunes音樂庫(kù)。能夠播放音樂軌跡和播放列表、搜索音樂、給用戶提供一個(gè)媒體picker呈現(xiàn)接口。
3)配置和管理電影的回放。
4)?在鎖定屏幕和app 切換窗口上顯示NowPlaying信息。當(dāng)內(nèi)容通過AirPlay提交時(shí)還能顯示到AppleTV上。
5)檢測(cè)視頻通過AirPlay被串流的時(shí)間。
2.2.13、OpenAL 框架
OpenAudio Library (OpenAL)接口是用來在應(yīng)用中提供位置音效的跨平臺(tái)的標(biāo)準(zhǔn)。
能夠使用該接口在游戲和其它需要位置音效輸出的程序中實(shí)現(xiàn)高性能、高質(zhì)量的聲音。
因?yàn)镺penAL是跨平臺(tái)的標(biāo)準(zhǔn),在iOS使用OpenAL編寫的代碼能夠容易地移植到許多其它平臺(tái)。
2.2.14、OpenGL ES 框架
OpenGLES?框架 (OpenGLES.framework)提供繪制2d和3d內(nèi)容的工具, 它是一個(gè)C-based的框架。
該框架以最接近設(shè)備硬件的方式為全屏沉浸式應(yīng)用例如游戲提供細(xì)粒度的圖形控制和高的幀率。
你能夠與EAGL配合使用這個(gè)框架,為OpenGL ES 繪制調(diào)用和UIKit的本地窗口對(duì)象之間提供接口。
該框架支持OpenGLES 1.1, 2.0,?3.0規(guī)范。2.0規(guī)范增加了片段和頂點(diǎn)著色的支持,3.0規(guī)范增加了更多的功能,包括多個(gè)呈現(xiàn)目標(biāo)和變換反饋。
2.2.15、Quartz Core 框架
QuartzCore 框架(QuartzCore.framework)包含Core Animation接口。
Core Animation是一個(gè)先進(jìn)的復(fù)合技術(shù),使用它能容易創(chuàng)建快和有效的view-based的動(dòng)畫。
復(fù)合引擎利用底層硬件來有效的實(shí)時(shí)操作視圖內(nèi)容。
只需規(guī)定動(dòng)畫的起始點(diǎn),CoreAnimation做剩下的工作。
因?yàn)镃ore Animation內(nèi)嵌在UIView架構(gòu)的底層,因此它總是可用的。
2.2.16Sprite Kit 框架
SpriteKit?框架 (SpriteKit.framework)框架為2d和2.5d游戲提供硬件加速的動(dòng)畫系統(tǒng)。
SpriteKit提供大多數(shù)游戲需要的基礎(chǔ),包括一個(gè)圖形引擎和動(dòng)畫系統(tǒng),聲音播放支持,一個(gè)物理仿真引擎。使用SpriteKit不需你自己創(chuàng)建這些事情,使你聚焦在內(nèi)容設(shè)計(jì)和內(nèi)容的高級(jí)別的交互上。
在Sprite Kit應(yīng)用中內(nèi)容組織為場(chǎng)景。一個(gè)場(chǎng)景包括紋理對(duì)象,視頻,路徑圖形,核心圖像過濾器和其它的特效。SpriteKit利用這些對(duì)象,確定這些對(duì)象到屏幕上的最有效的方式。當(dāng)在場(chǎng)景中到了動(dòng)畫內(nèi)容的時(shí)刻,你能使用SpriteKit來顯式規(guī)定你想執(zhí)行的行動(dòng)或使用物理仿真引擎來為那些對(duì)象定義物理行為(例如重力、引力或排拆力)。
除了SpriteKit框架,也有其它Xcode工具來創(chuàng)建顆粒發(fā)射效果和紋理圖。你能使用Xcode工具來管理應(yīng)用資源和快速地更新Sprite Kit場(chǎng)景。
三?CoreServices Layer(核心服務(wù)層)
CoreServices Layer包含應(yīng)用需要的基礎(chǔ)的系統(tǒng)服務(wù)。這些服務(wù)中的核心是CoreFoundation和Foundation框架,定義了所有應(yīng)用使用的基本類型。
該層也包含獨(dú)立的技術(shù)來支持一些其它功能, 例如位置、iCloud、社交媒體和網(wǎng)絡(luò)。
3.1 包含的高級(jí)功能:
Peer-to-Peer Services(點(diǎn)到點(diǎn)服務(wù))
這個(gè)Multipeer Connectivity框架提供通過藍(lán)牙進(jìn)行p2p連接的能力。
你能使用p2p連接來啟動(dòng)與附近設(shè)備的通訊會(huì)話。
雖然p2p連接主要用在游戲中,你也能在其它類型的應(yīng)用中使用這個(gè)功能。
iCloud Storage(云存儲(chǔ))
iCloud存儲(chǔ)讓應(yīng)用把用戶文檔和數(shù)據(jù)寫到一個(gè)中心位置,用戶然后能從他們的計(jì)算機(jī)和ios 設(shè)備存取這些數(shù)據(jù)。
使用iCloud可以使用戶文檔無(wú)所不在,意味著用戶能從任何設(shè)備閱讀或編輯那些文檔,而不需要顯式的同步或文件傳輸。存儲(chǔ)文檔到用戶的iCloud賬戶也為用戶提供了一層安全。即使用戶的設(shè)備丟失,那些設(shè)備上的文檔如果已經(jīng)保存到iCloud就不會(huì)丟失。
應(yīng)用能以兩種方式使用 iCloud存儲(chǔ),每一種有不同的使用意圖:
1) iCloud文檔存儲(chǔ)。
可以使用這個(gè)功能在用戶的iCloud賬戶存儲(chǔ)用戶文檔和數(shù)據(jù)。
2)iCloud鍵值存儲(chǔ)。
使用這個(gè)功能在應(yīng)用之間共享數(shù)據(jù)。
大多數(shù)應(yīng)用使用iCloud文檔存儲(chǔ)來共享來自用戶賬戶的文檔。使用iCloud文檔存儲(chǔ)用戶關(guān)心的是文檔能否能夠在設(shè)備之間共享以及他們是否能夠從一個(gè)給定設(shè)備查看和管理那些文檔。
相對(duì)的,iCloud鍵值存儲(chǔ)是應(yīng)用與應(yīng)用的其它實(shí)例共享小量數(shù)據(jù)(幾十k字節(jié))的方式,應(yīng)用應(yīng)當(dāng)用它存儲(chǔ)非緊急的應(yīng)用數(shù)據(jù),例如設(shè)置。
Automatic Reference Counting(自動(dòng)引用計(jì)數(shù))
AutomaticReference Counting(ARC)是一個(gè)編譯級(jí)別的功能,用它來簡(jiǎn)化Objective-C對(duì)象生命周期過程的管理,以此代替用戶必須記住什么時(shí)候應(yīng)該保持和釋放對(duì)象。
ARC評(píng)估對(duì)象的生命周期需求和自動(dòng)在編譯時(shí)間插入適當(dāng)?shù)姆椒ㄕ{(diào)用。
ARC用來代替ios 的早期版本中存在的傳統(tǒng)的管理內(nèi)存的編程模式。
新創(chuàng)建的工程自動(dòng)使用ARC。XCODE也提供了移植工具幫助你轉(zhuǎn)換遺留的工程來使用ARC.
Block Objects(塊對(duì)象)
BlockObjects是一個(gè)能夠與你的C或Objective-C代碼集成的C語(yǔ)言的構(gòu)造塊。一個(gè)blockobject本質(zhì)上是一個(gè)異步功能和相關(guān)的數(shù)據(jù)。在其它語(yǔ)言中有時(shí)也被稱做closure或lambda。
Blocks尤其用作回調(diào)或放在你需要一種容易的組合執(zhí)行代碼和相關(guān)數(shù)據(jù)方式的地方。
在ios,通常在下面的場(chǎng)景使用Blocks:
1)作為代理或代理方法的代替;
2) 作為回調(diào)功能的代替;
3)為某個(gè)一次性操作實(shí)現(xiàn)其完成處理函數(shù);
4)? 在一個(gè)集合中的所有項(xiàng)上執(zhí)行一個(gè)任務(wù);
5)與提交隊(duì)列一起執(zhí)行異步任務(wù)。
Data Protection(數(shù)據(jù)保護(hù))
DataProtection允許應(yīng)用利用設(shè)備上已有的內(nèi)建的加密方法來使用用戶的敏感數(shù)據(jù)。
當(dāng)應(yīng)用指定一個(gè)特定的文件被保護(hù)時(shí),系統(tǒng)在磁盤上以加密格式存儲(chǔ)該文件。當(dāng)設(shè)備鎖定時(shí),該文件的內(nèi)容不能被應(yīng)用和任何潛在的侵入者存取。可是當(dāng)設(shè)備由用戶解鎖時(shí),一個(gè)解密key被創(chuàng)建允許你的應(yīng)用存取那個(gè)文件。
用戶也可以使用其它級(jí)別的數(shù)據(jù)保護(hù)機(jī)制。
實(shí)現(xiàn)數(shù)據(jù)保護(hù)需要你考慮如何創(chuàng)建和管理你想保護(hù)的數(shù)據(jù)。應(yīng)用必須設(shè)計(jì)在數(shù)據(jù)的創(chuàng)建時(shí)間加密數(shù)據(jù),以及當(dāng)用戶鎖定或解鎖設(shè)備時(shí)為存取條件改變做好準(zhǔn)備。
File-Sharing Support(文件共享支持)
File-SharingSupport使用戶數(shù)據(jù)文件在iTunes 9.1和以后上可被其它應(yīng)用獲得。一個(gè)應(yīng)用聲明支持文件共享使它的/Documents目錄下的內(nèi)容對(duì)其它用戶可獲得。用戶然后當(dāng)需要時(shí)能夠把文件從iTunes移進(jìn)或移出應(yīng)用的Documents目錄。
這個(gè)特征不允許應(yīng)用與相同設(shè)備上的其它應(yīng)用共享應(yīng)用,這需要粘貼板或一個(gè)文檔交互控制器對(duì)象。
應(yīng)用為了允許文件共享支持,需要做如下工作:
1、 在應(yīng)用的Info.plist文件中增加UIFileSharingEnabled鍵,并設(shè)置其值為YES。
2)、在你的應(yīng)用的Documents中放你想共享的文件;
3、當(dāng)設(shè)備插進(jìn)用戶的計(jì)算機(jī)時(shí),iTunes在選中設(shè)備的Apps標(biāo)簽下顯式一個(gè)文件共享節(jié);
4、用戶然后能夠增加文件到設(shè)備的文檔目錄或移動(dòng)文件到桌面。
支持文件共享的應(yīng)用應(yīng)該能夠識(shí)別文件什么時(shí)候增加到其Documents目錄和做出適當(dāng)?shù)膽?yīng)答。例如應(yīng)用可以使任意新文件的內(nèi)容可以從它的接口獲得。也應(yīng)該從不把Documents目錄的文件列表呈現(xiàn)給用戶來請(qǐng)求用戶決定對(duì)那些文件做什么。
Grand Central Dispatch
GrandCentral Dispatch(GCD)是一個(gè)BSD技術(shù),應(yīng)用可以用來管理其任務(wù)的執(zhí)行。
GCD與高優(yōu)化的核組合成一個(gè)異步編程模式,來提供方便和更有效的對(duì)線程的替代。GCD也為許多低級(jí)別的任務(wù)提供一個(gè)方便的選擇,例如讀和寫文件描述符,實(shí)現(xiàn)定時(shí)器和監(jiān)視信號(hào)和處理事件。
In-App Purchase(應(yīng)用內(nèi)購(gòu)買)
In-App Purchase 提供在應(yīng)用中銷售應(yīng)用特定的內(nèi)容和服務(wù)以及來自iTunes的內(nèi)容的能力。
這個(gè)功能使用StoreKit框架實(shí)現(xiàn),并提供使用用戶的iTunes賬號(hào)來處理金融方面的事務(wù)需要的基礎(chǔ)。
應(yīng)用處理全部用戶體驗(yàn)和供購(gòu)買的內(nèi)容及可獲得服務(wù)的呈現(xiàn)。作為可下載的內(nèi)容,你能把可下載的內(nèi)容放到你自己的服務(wù)器或使用蘋果的服務(wù)器。
SQLite
SQLite庫(kù)讓你在你的應(yīng)用中嵌入一個(gè)輕量級(jí)的sql數(shù)據(jù)庫(kù),而不需要運(yùn)行一個(gè)分離的遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)進(jìn)程。從你的應(yīng)用,你能創(chuàng)建本地?cái)?shù)據(jù)庫(kù)文件,管理數(shù)據(jù)庫(kù)表和表中的數(shù)據(jù)記錄。
SQLite庫(kù)為通用功能使用設(shè)計(jì),但已經(jīng)被優(yōu)化來提供對(duì)數(shù)據(jù)記錄更快速的存取。
XML Support
Foundation框架提供一個(gè)NSXMLParser類用來從一個(gè)xml文檔中引出元素。
操作xml內(nèi)容的額外的支持由libxml2庫(kù)提供支持。libxml2開源庫(kù)讓你快速地分析或?qū)懭我獾膞ml數(shù)據(jù)和轉(zhuǎn)換xml內(nèi)容到html.
3.2 Core Services Frameworks(核心服務(wù)框架)
Core Services Frameworks包含下面的一些框架。
1)、Accounts Framework(帳戶框架)
Accounts框架 (Accounts.framework)為確定的用戶賬號(hào)提供單點(diǎn)登錄模式。
單點(diǎn)登錄通過消除用戶分離的多個(gè)賬號(hào)需要的多次登錄提示,來增強(qiáng)用戶體驗(yàn)。它也通過為應(yīng)用管理賬號(hào)認(rèn)證過程來簡(jiǎn)化開發(fā)模式。
該框架需要與Social框架配合使用。
2)Address Book Framework(地址本框架)
AddressBook 框架(AddressBook.framework)提供可編程存取用戶的聯(lián)系人數(shù)據(jù)庫(kù)的方式。
如果應(yīng)用使用聯(lián)系人信息,你能使用該框架來存取和修改聯(lián)系人信息。例如一個(gè)聊天應(yīng)用可以使用該框架來引出可能的聯(lián)系人列表,通過聯(lián)系人列表來啟動(dòng)一個(gè)會(huì)話以及在特定視圖顯示那些聯(lián)系人。
重要提示:存取用戶的聯(lián)系人數(shù)據(jù)需要用戶的明確的許可。應(yīng)用因此必須準(zhǔn)備好用戶拒絕存取的情形。應(yīng)用也鼓勵(lì)提供Info.plist鍵來描述需要存取的原因。
3)Ad Support Framework(廣告支持框架)
AdSupport?框架 (AdSupport.framework)提供存取應(yīng)用用于廣告功能的一個(gè)標(biāo)識(shí)。
該框架也提供一個(gè)指示用戶是否選擇廣告跟蹤的標(biāo)志。應(yīng)用在試圖存取廣告標(biāo)識(shí)前需要度和判斷這個(gè)標(biāo)志。
4)CFNetwork 框架
CFNetwork框架 (CFNetwork.framework)是高性能的使用面向?qū)ο髮?duì)網(wǎng)絡(luò)協(xié)議進(jìn)行抽象的一組C-based接口。這些抽象提供對(duì)協(xié)議棧細(xì)節(jié)的控制,使它容易使用低級(jí)別的構(gòu)造例如BSDsockets。
你能使用該框架簡(jiǎn)化與ftp或http服務(wù)器通訊或決定dnshosts的任務(wù)。使用CFNetwork 框架,你能:
1、使用BSD sockets。
2、使用SSL或TLS創(chuàng)建安全連接。
3、決定dnshosts。
4、與HTTP服務(wù)器、認(rèn)證HTTP服務(wù)器、HTTPS服務(wù)器交互。
5、與FTP服務(wù)器交互。
6、發(fā)布、解決和瀏覽Bonjour服務(wù)。
CFNetwork物理和理論上基于BSD sockets。
5)Core Data 框架
CoreData?框架 (CoreData.framework)框架是管理MVC應(yīng)用中的數(shù)據(jù)模式的一種技術(shù)。
CoreData框架打算在數(shù)據(jù)模式是高結(jié)構(gòu)化的應(yīng)用中使用。
代替編程定義數(shù)據(jù)結(jié)構(gòu),在xcode中能夠使用圖形工具來建立一個(gè)表現(xiàn)你的數(shù)據(jù)模式的綱要。在運(yùn)行時(shí),你的數(shù)據(jù)模式實(shí)體的實(shí)例通過CoreData框架被創(chuàng)建、管理和獲得。
通過為你的應(yīng)用管理其數(shù)據(jù)模式,CoreData大大減少了必須書寫的代碼量。CoreData也提供如下功能:
1、為優(yōu)化性能在SQLite數(shù)據(jù)庫(kù)中存儲(chǔ)對(duì)象數(shù)據(jù);
2、一個(gè)管理數(shù)據(jù)表視圖結(jié)果的NSFetchedResultsController類;
3、對(duì)基本的文本編輯之外的undo/redo的管理;
4、支持屬性值的校驗(yàn);
5、支持傳播改變確保對(duì)象之間的關(guān)系保持一致性;
6、支持分組、過濾和在內(nèi)存中優(yōu)化數(shù)據(jù)。
如果你開始開發(fā)一個(gè)新應(yīng)用或計(jì)劃對(duì)已有應(yīng)用進(jìn)行大的更新,應(yīng)該考慮使用CoreData。
6)Core Foundation 框架
CoreFoundation?框架 (CoreFoundation.framework)是一組C-based接口,為ios應(yīng)用提供基本的數(shù)據(jù)管理和服務(wù)功能。該框架包括如下支持:
集合數(shù)據(jù)類型(數(shù)組、集合等等);
應(yīng)用打包Bundles;
字符串管理;
日期和時(shí)間管理
原始數(shù)據(jù)塊管理
Preferences管理;
URL和流操作;
線程
9、端口和socket通訊。
CoreFoundation框架與Foundation框架緊密相關(guān),為相同的基本功能提供Objective-C接口。
當(dāng)你需要混合使用Foundation對(duì)象和Core Foundation類型時(shí),你能利用兩個(gè)框架之間存在的“toll-freebridging”。toll-free bridging”意味著你能可交換地在兩個(gè)框架的方法和功能中使用一些CoreFoundation和Foundation類型。這個(gè)支持對(duì)許多數(shù)據(jù)類型可用,包括集合和字符串?dāng)?shù)據(jù)類型。
每個(gè)框架的類和類型描述聲明一個(gè)對(duì)象是否是toll-freebridged以及在是的情況下來標(biāo)識(shí)它連接到什么對(duì)象。
7)Core Location 核心位置框架
CoreLocation?框架? (CoreLocation.framework)為應(yīng)用提供位置信息。該框架使用板上的GPS、蜂窩、或者Wi-Fi來定位用戶的當(dāng)前經(jīng)度和緯度。
你可在你的應(yīng)用中集成該技術(shù)為用戶提供位置信息。例如,你可實(shí)現(xiàn)一個(gè)基于用戶的當(dāng)前位置搜索附近餐館、商店或者銀行的應(yīng)用。CoreLocation框架也提供如下能力:
1) 在包括磁力計(jì)的ios設(shè)備上存取羅盤信息;
2) 基于地理位置或藍(lán)牙beacon進(jìn)行區(qū)域監(jiān)視;
3)?支持使用蜂窩基站的低耗電的位置監(jiān)視;
4)與MapKit配合來增強(qiáng)在特定情景下的位置數(shù)據(jù)的質(zhì)量,例如開車時(shí)。
8)Core Media Framework(核心媒體框架)
CoreMedia 框架(CoreMedia.framework)提供由AV Foundation框架使用的低級(jí)別的媒體類型。大多數(shù)應(yīng)用從不需要使用該框架,但少數(shù)需要更精確控制音視頻內(nèi)容創(chuàng)建和呈現(xiàn)的開發(fā)者可以使用它。
9)Core Motion Framework (核心運(yùn)動(dòng)框架)
CoreMotion?框架 (CoreMotion.framework)提供一組接口來存取設(shè)備上可獲得的運(yùn)動(dòng)數(shù)據(jù)。
該框架支持使用一組新的block-based接口來存取原始和加工過的加速度計(jì)數(shù)據(jù)。對(duì)于帶有陀螺儀的設(shè)備,你也能獲得原始的陀螺儀數(shù)據(jù)和加工過的反應(yīng)設(shè)備方向和旋轉(zhuǎn)速度的數(shù)據(jù)。
你能在游戲或其它使用運(yùn)動(dòng)作為輸入或作為增強(qiáng)用戶體驗(yàn)的方式的應(yīng)用中使用加速度計(jì)和陀螺儀兩種數(shù)據(jù)。對(duì)于帶有計(jì)步硬件的設(shè)備,你能存取它的數(shù)據(jù)來跟蹤健康相關(guān)的運(yùn)動(dòng)。
10)Core Telephony Framework(核心電話框架)
CoreTelephony?框架 (CoreTelephony.framework)提供與蜂窩電話的通話相關(guān)的信息交互的接口。
可以使用該框架來獲得用戶的蜂窩服務(wù)提供者的信息。對(duì)于對(duì)蜂窩call事件感興趣的應(yīng)用例如VoIP應(yīng)用也能在那些事件出現(xiàn)時(shí)被通知。
11)Event Kit 框架
EventKit?框架 (EventKit.framework)提供存取用戶設(shè)備上的月歷事件的接口。能夠使用該框架來做如下事情:
1)?獲得用戶月歷上存在的事件和提示;
2)增加事件到用戶月歷;
3)為用戶創(chuàng)建提示和使它們出現(xiàn)在提示應(yīng)用中;
4)為月歷事件配置提示信號(hào),包括設(shè)置提示信號(hào)應(yīng)該什么時(shí)候觸發(fā)的規(guī)則。
重要提示:存取用戶的月歷和提示數(shù)據(jù)需要用戶的明確許可。應(yīng)用因此必須準(zhǔn)備好用戶拒絕的情形,也鼓勵(lì)應(yīng)用在其Info.plist文件中提供一個(gè)描述需要存取原因的鍵。
12)Foundation框架
Foundation框架 (Foundation.framework)提供Core Foundation框架提供的許多功能的Objective-C封裝。該框架提供如下功能的支持:
集合數(shù)據(jù)類型(數(shù)組、集合等等);
應(yīng)用打包Bundles;
字符串管理;
日期和時(shí)間管理
原始數(shù)據(jù)塊管理
Preferences管理;
URL和流操作;
線程和運(yùn)行環(huán);
Bonjour;
通訊端口管理;
國(guó)際化;
規(guī)則表達(dá)式匹配;
Cache支持。
13)JavaScript??核心 框架
JavaScriptCore?框架 (JavaScriptCore.framework)為許多標(biāo)準(zhǔn)的JavaScript對(duì)象提供Objective-C語(yǔ)言的封裝。使用該框架來執(zhí)行JavaScript代碼和分析JSON數(shù)據(jù)。
14)Mobile Core Services (移動(dòng)核心服務(wù)框架)
MobileCore Services 框架(MobileCoreServices.framework)定義在通用類型標(biāo)識(shí)符(UTIs)中使用的低級(jí)別類型。
15)Multipeer Connectivity Framework(多方連接框架)
MultipeerConnectivity?框架 (MultipeerConnectivity.framework)支持附近設(shè)備的發(fā)現(xiàn),并與那些設(shè)備直接通訊(不需要Internet連接)。
使用該框架能夠與附近設(shè)備通訊、容易的創(chuàng)建多人會(huì)話、支持可靠地傳輸順序和實(shí)時(shí)數(shù)據(jù)。
該框架為發(fā)現(xiàn)和管理網(wǎng)絡(luò)服務(wù)提供可編程和UI-based的選項(xiàng)。應(yīng)用能在ui中集成MCBrowserViewController類來顯示一個(gè)發(fā)現(xiàn)設(shè)備列表讓用戶選擇。另外也能使用MCNearbyServiceBrowser類來可編程的查找和管理對(duì)方設(shè)備。
16)Newsstand Kit 框架
Newsstand應(yīng)用為用戶提供了一個(gè)閱讀雜志和報(bào)紙的中心位置。想通過Newsstand提供雜志和報(bào)紙內(nèi)容的出版商能夠使用NewsstandKit 框架(NewsstandKit.framework)創(chuàng)建它們自己的iOS應(yīng)用,讓用戶啟動(dòng)新雜志和報(bào)紙新聞的后臺(tái)下載。在啟動(dòng)下載后,系統(tǒng)處理下載操作和當(dāng)內(nèi)容可獲得時(shí)通知應(yīng)用。
17)Pass Kit 框架
Passbook應(yīng)用為用戶提供了一個(gè)存儲(chǔ)訂貨單、登機(jī)卡、入場(chǎng)券和商業(yè)折扣卡的位置。代替物理攜帶這些東西,用戶現(xiàn)在能在IOS設(shè)備上存儲(chǔ)它們,并和過去一樣的方式使用。
Pass Kit?框架 (PassKit.framework)提供把這些功能集成到你的應(yīng)用的Objective-C接口。
你能與web接口和文件格式信息組合使用該框架來創(chuàng)建和管理你們公司提供的電子入場(chǎng)券。
電子入場(chǎng)券由你們公司的web service創(chuàng)建并通過email、Safari或定制的應(yīng)用提交到用戶的設(shè)備。電子入場(chǎng)券本身使用特殊的文件格式,在提交之前被加密簽名。文件格式標(biāo)識(shí)關(guān)于提供服務(wù)的相關(guān)信息以及用戶知道是什么服務(wù)的信息。
電子入場(chǎng)券也可以包含一個(gè)對(duì)卡進(jìn)行校驗(yàn)的條碼或其它信息,以便它能被兌換或使用。
18)Quick Look 框架
QuickLook 框架(QuickLook.framework)提供了一個(gè)預(yù)覽應(yīng)用不直接支持的文件內(nèi)容的接口。
該框架主要打算用于應(yīng)用從網(wǎng)絡(luò)下載文件或處理來自不知道來源的文件的工作。
在得到文件后,你能使用該框架提供的視圖控制器來直接顯示文件的內(nèi)容。
19)Safari Services 框架
SafariServices?框架 (SafariServices.framework)提供以可編程的方式增加URLs到用戶的Safari的書簽的支持。
20)Social Framework(社交框架)
Social框架(Social.framework)提供一個(gè)簡(jiǎn)單的接口來存取用戶的社交媒體賬號(hào)。
該框架取代Twitter框架并增加了其它社交賬號(hào),包括Facebook、Sina微博以及其它。
應(yīng)用能使用該框架提交狀態(tài)更新和圖像到用戶賬號(hào)。該框架與Accounts框架一起為用戶提供單點(diǎn)登錄并確保存取的用戶賬號(hào)是經(jīng)過準(zhǔn)許的。
21)Store Kit 框架
StoreKit?框架 (StoreKit.framework)提供在ios應(yīng)用中購(gòu)買內(nèi)容和服務(wù)的支持,也被稱作應(yīng)用內(nèi)購(gòu)買。
例如,你能使用該功能來允許用戶去鎖另外的應(yīng)用功能?;蛘呷绻闶且幻螒蜷_發(fā)者,你能使用它來提供另外的游戲級(jí)別。在這兩種情況,StoreKit框架處理事務(wù)的收入方面事務(wù),包括通過用戶的iTunes賬號(hào)處理付費(fèi)請(qǐng)求,給應(yīng)用提供關(guān)于購(gòu)買的信息。
Store Kit聚集在事務(wù)的金融方面,確保事務(wù)正確和安全。你的應(yīng)用處理事務(wù)的其它方面,包括購(gòu)買接口的呈現(xiàn)和適當(dāng)內(nèi)容的下載(去鎖)。
工作的分工讓你能夠控制購(gòu)買內(nèi)容的用戶體驗(yàn)。由你決定你想呈現(xiàn)給用戶什么樣的購(gòu)買接口和什么時(shí)候那樣做,你也決定你的應(yīng)用最好的提交機(jī)制。
22)System Configuration Framework(系統(tǒng)配置框架)
SystemConfiguration 框架(SystemConfiguration.framework)提供可達(dá)性接口,你能用它來確定設(shè)備的網(wǎng)絡(luò)配置,也能使用該框架確定一個(gè)Wi-Fi或蜂窩連接是否在用以及一個(gè)特定的主機(jī)服務(wù)器是否能夠存取。
四Core OS Layer(核心OS層)
CoreOS層包含其它大多數(shù)技術(shù)建在其之上的低級(jí)別的功能。雖然應(yīng)用不直接使用這些技術(shù),它們被其它框架使用。在需要顯而易見的處理安全或與外設(shè)通訊的情形,你也能使用該層提供的框架。
4.1? Core OS包含的框架:
1)Accelerate 加速框架
Accelerate框架 (Accelerate.framework)包含執(zhí)行數(shù)字信號(hào)處理、線性代數(shù)、圖像處理計(jì)算的接口。
使用該框架的優(yōu)點(diǎn)是它們針對(duì)所有的ios設(shè)備上存在的硬件配置做了優(yōu)化,因此你能寫一次代碼確保在所有設(shè)備上有效運(yùn)行。
2)Core Bluetooth Framework(核心藍(lán)牙框架)
CoreBluetooth?框架 (CoreBluetooth.framework)允許開發(fā)者與藍(lán)牙低耗電外設(shè)(LE)交互。
使用該框架的Objective-C接口能夠完成如下工作:
1、掃描藍(lán)牙外設(shè),連接和斷開發(fā)現(xiàn)的藍(lán)牙外設(shè);
2、聲明應(yīng)用的服務(wù),轉(zhuǎn)換ios 設(shè)備成其它藍(lán)牙設(shè)備的外設(shè);
3、從IOS設(shè)備廣播iBeacon信息;
4、保存你的藍(lán)牙連接的狀態(tài),當(dāng)應(yīng)用重新啟動(dòng)時(shí)恢復(fù)那些連接;
5、藍(lán)牙外設(shè)可獲得性變化時(shí)獲得通知。
3)External Accessory Framework(外部附件框架)
ExternalAccessory 框架(ExternalAccessory.framework)提供與連接到IOS設(shè)備的硬件附件通訊的支持。
附件能通過30-pin連接器或使用藍(lán)牙無(wú)線與IOS設(shè)備進(jìn)行連接。該框架給你提供了獲得關(guān)于每一個(gè)可獲得的附件信息和啟動(dòng)通訊會(huì)話的方式。然后,你可自由的使用附件支持的命令直接操作附件。
4)Generic Security Services Framework(通用安全服務(wù)框架)
GenericSecurity Services?框架 (GSS.framework)給ios應(yīng)用提供一組標(biāo)準(zhǔn)安全相關(guān)的服務(wù)。該框架的基本接口規(guī)定在IETFRFC2743andRFC4401。除了提供標(biāo)準(zhǔn)的接口,IOS還包括一些沒有在標(biāo)準(zhǔn)中規(guī)定但被許多應(yīng)用需要的一些管理證書需要的額外東西。
5)Security Framework(安全框架)
除了內(nèi)建的安全功能,IOS也提供了一個(gè)明確的安全框架(Security.framework),你能用它來保證應(yīng)用管理的數(shù)據(jù)的安全。
該框架提供管理證書、公有和私有key和信任策略的接口。支持產(chǎn)生加密安全偽隨機(jī)碼。它也支持在keychain(保存敏感用戶數(shù)據(jù)的安全倉(cāng)庫(kù))中保存證書和加密key。
公共加密庫(kù)提供對(duì)稱加密、hash認(rèn)證編碼(HMACs)、數(shù)字簽名等額外支持,數(shù)字簽名功能本質(zhì)上與iOS上沒有的OpenSSL庫(kù)兼容。
在你創(chuàng)建的多個(gè)應(yīng)用之間共享keychain是可能的。共享使它容易在相同的一套應(yīng)用之間更平滑的協(xié)作。例如,你能使用該功能來共享用戶口令或其它元素,否則可能使每個(gè)應(yīng)用都需要提示用戶。
為了在應(yīng)用之間共享數(shù)據(jù),必須為每個(gè)應(yīng)用的Xcode工程配置適當(dāng)?shù)臋?quán)限。
6)System
System級(jí)包含kernel環(huán)境、驅(qū)動(dòng)以及操作系統(tǒng)級(jí)別的unix接口。kernel本身負(fù)責(zé)操作系統(tǒng)的每一個(gè)方面:如虛擬內(nèi)存管理、線程、文件系統(tǒng)、網(wǎng)絡(luò)和互聯(lián)通信。在該層的驅(qū)動(dòng)也提供在可獲得的硬件與系統(tǒng)框架之間的接口。為了安全,對(duì)kernel和驅(qū)動(dòng)的存取被限制到一組有限的系統(tǒng)框架和應(yīng)用。
IOS提供一組存取許多操作系統(tǒng)低級(jí)別功能的接口。應(yīng)用通過LibSystem庫(kù)存取這些功能。該C based的接口提供如下功能的支持:
1) 多任務(wù)(POSIX線程和GCD)
2) 網(wǎng)絡(luò)(BSDsockets)
3) 文件系統(tǒng)存取
4) 標(biāo)準(zhǔn)I/O
5) Bonjour和DNS服務(wù)
6)? 位置信息
7) ?內(nèi)存分配
8) 數(shù)學(xué)計(jì)算
7) 64-Bit Support
IOS原先是為32-bit架構(gòu)的設(shè)備設(shè)計(jì)的。自iOS 7,開始支持在64-bit進(jìn)行編譯、鏈接和調(diào)試。所有的系統(tǒng)庫(kù)和框架是支持64位的,意味著它們能在32-bit和64-bit應(yīng)用中使用。當(dāng)以64-bit運(yùn)行時(shí)編譯時(shí),應(yīng)用可能運(yùn)行的更快,因?yàn)樵?4-bit模式可以獲得額外的處理器資源。
iOS使用OS X和其它64-bitUNIX系統(tǒng)使用的LP64模式,意味著在這些系統(tǒng)移植時(shí)不會(huì)碰到太頭疼的事。