在iOS中框架是一個文件夾。包含了共享資源庫,用於訪問該資源庫中儲存的代碼的頭文件,以及圖像、聲音文件等其餘資源。css
共享資源庫定義應用程序能夠調用的函數和方法。html
iOS爲應用程序開發提供了不少可以使用的框架,並構成IOS操做系統的層次架構。分爲四層,從上到下依次爲:Cocoa Touch Layer(觸摸UI層)、MediaLayer(媒體層)、Core Services Layer(核心服務層)、Core OS Layer(核心OS層)。ios
低層次框架提供IOS的基本服務和技術。高層次框架創建在低層次框架之上用來提供更加複雜的服務和技術,較高級的框架向較低級的結構提供面向對象的抽象。web
在開發應用時應儘量使用較高級的框架。假設要開發的國內在高層框架中沒有提供。你也可使用較低層框架和技術。sql
Foundation和 UIKit框架是應用編程用到的兩個主要的框架,能夠知足大多數應用程序的開發需求。數據庫
UIKit框架提供的類,用於建立基於觸摸的用戶界面。所有 iOS 應用程序都是基於 UIKit, 沒有這個框架,就沒法交付應用程序。編程
UIKit提供應用程序的基礎架構,用於在屏幕上畫圖、處理事件,以及建立通用用戶界面及當中元素。UIKit還經過管理屏幕上顯示的內容,來組織應用程序。api
Foundation框架爲所有應用程序提供主要的系統服務。應用程序以及 UIKit和其餘框架。都是創建在 Foundation 框架的基礎結構之上。 Foundation框架提供不少主要的對象類和數據類型。使其成爲應用程序開發的基礎。它還制定了一些約定(如用於取消分配等任務),使代碼更加一致,可複用性更好。數組
整個框架架構圖例如如下:xcode
一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中的基於文本的控制集成贊成應用更easy地建立、編輯、顯示和存儲文本。
3)、UIKit Dynamics
UIKit dynamics用來爲符合UIDynamicItem協議的UIView對象或其餘對象規定動畫行爲。
經過在應用的UI中集成真實世界行爲和特性進,動畫行爲爲應用提供了一種加強用戶體驗的方式。
4)、Multitasking
在ios中多任務用來設計來使電池使用時間最大化。
5)、Auto Layout
本身主動佈局幫助你使用很是少的代碼來創建動態接口。
使用AutoLayout定義怎樣在用戶接口上佈局元素的規則。這些規則表達了視圖類之間的關係。如規定一個button老是處於它的父窗體的左邊緣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應用的推送通知,用戶需要作兩部分的工做。首先應用必須登記該通知服務以及在通知被提交時處理相關的通知數據。
第二,你必須提供一個服務端的進程來產生通知。
服務端的進程可使用你本身的本地server或者使用蘋果的推送通知服務。
9)、Local Notifications
本地通知做爲推送通知機制的補充,能夠給應用提供一種不依賴外部server產生本地通知的方式。
執行在後頭的應用能使用本地通知做爲當重要的事件發生時引發用戶注意的一種方式。好比,執行在後臺的導航應用能使用本地通知來提示用戶什麼時間該轉彎了。
應用也能調度本地通知在未來的時間提交以及使那些通知在應用不執行也能被提交。
本地通知的一個長處是它們與你的應用是獨立的。在一個通知已被調度,系統管理它的提交。
另外當通知被提交時你的應用甚至沒必要執行。
10)、Gesture Recognizers
手勢識別用來檢測一般類型的手勢。
因爲手勢識別使用與系統檢測手勢一樣的試探方法,所以手勢識別爲應用提供了一個一致的行爲。爲了使用它,你能在你的視圖上附加手勢識別功能和並給它提供一個在手勢出現時要執行的方法。
手勢識別跟蹤原始的觸摸事件和肯定它們何時與想要的手勢匹配。
11)、System View Controllers
不少系統框架爲標準的系統接口定義了視圖控制器。
僅僅要有可能,爲了呈現一致的用戶體驗,就應該使用系統提供的視圖控制器而不是建立一個新的。
2.2 Cocoa Touch層框架
CoCoa Touch層包含例如如下框架:
一、Address Book UI Framework(地址本UI框架)
該框架提供一個面向對象的編程接口。
用來顯示標準的系統接口,來建立新的聯繫人和編輯和選擇已存在的聯繫人。
二、Event Kit UI Framework(月曆事件UI框架)
該框架提供一個視圖控制器來呈現標準的系統接口,來觀察和編輯月曆相關的事件。EventKit UI Framework基於Event Kit framework框架。
三、Game Kit Framework(遊戲工具框架)
該框架實現對遊戲中心的支持。讓用戶能夠在線共享他們的遊戲相關的信息。
四、iAd Framework(iAD框架)
該框架用來在應用中提供廣告條。
當你想要顯示廣告時,廣告條與用戶UI上的標準的視圖進行合併。
這些視圖與蘋果的iAd服務一塊兒工做,本身主動處理、載入和呈現富媒體廣告以及應答在那些廣告條上的點擊等所有相關的工做。
五、Map Kit Framework(地圖工具框架)
MapKit提供與應用的UI組合的一個可滾動的地圖。
除了顯示一個地圖,你能使用該框架接口來定製地圖的內容和外觀。也能使用註解來標記感興趣的點,也能使用定製的內容來與地圖內容疊置。
好比,你能夠在地圖上來畫一條公交路線,或者使用註解來高亮顯示附近的商店和餐館。
除了顯示地圖。MapKit框架還能與地圖應用以及蘋果的地圖server集成來爲用戶指引方向。
地圖應用能夠給隨意支持方向的應用提供方向的代理。
如提供特定類型方向的應用,好比一個顯示地鐵路線的應用,能登記請求接收地圖應用提供的方向。
應用也能向蘋果的server請求步行或駕駛方向,並與他們定製的方向的路徑信息混合來爲用戶提供完整的點到點體驗。
六、Message UI Framework( 消息UI框架)
該框架用來在應用中提供編輯郵件和sms消息的支持。
編輯支持包含一個呈現到你的應用的視圖控制器接口,並能設置這個視圖控制器的一些區域。如接收人、主題、郵件主體和郵件想包含的隨意附件。
在呈現視圖控制器後,也能爲用戶提供一個在發送郵件以前能夠編輯郵件的選項。
七、UIKit Framework
該框架提供實現圖形和事件驅動的應用的相當重要的基礎。包含:
一、主要的應用管理和基礎設施,包含應用的主循環。
二、用戶接口管理。包含對storyboards和nib文件的支持;
三、一個用來封裝用戶UI內容的視圖控制器模式;
四、 標準系統視圖和控制對象。
五、提供處理觸摸和運動事件的支持。
六、支持包含與iCloud集成功能的文檔模式;
七、 圖形和窗體支持。包含支持外部顯示器;
八、多任務支持;
九、打印支持。
十、 定製標準UIKit控制的外觀;
十一、支持文本和web內容;
十二、剪切、複製、粘貼的支持;
1三、支持動畫UI;
1四、經過url語義和框架接口與系統提供的其餘應用集成的能力;
1五、對有障礙用戶的可存取性的支持;
1六、支持ApplePush Notification服務;
1七、本地通知調度和提交;
1八、pdf 建立。
1九、支持定製像系統鍵盤行爲同樣的用戶輸入視圖;
20、支持建立與系統鍵盤交互的定製的文本視圖。
2一、支持經過email,Twitter, Facebook和其餘服務共享內容。
也支持一些設備特定功能的集成,好比
一、內建的攝像機;
二、用戶的圖片庫。
三、設備名和模式信息;
四、電池狀態信息;
五、接近傳感器信息;
六、來自附件耳機的遠程控制信息
2、MediaLayer(媒體層)
媒體層包含在應用中實現多媒體體驗的圖形、聲音、視頻技術和框架。使用這層的技術可使你easy的創建更加好看和好聽的應用。
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庫存取的easy方式。也提供對播放軌跡和播放列表的支持。
當你想高速在應用中集成聲音以及不需要控制播放行爲時可使用該框架。
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.一、Assets Library 框架
AssetsLibrary 框架(AssetsLibrary.framework)提供對用戶設備上圖片應用管理的圖片和視頻的存取。
使用該框架來存取用戶保存的圖片相冊或導入到設備的隨意相冊中的圖片。你也能保存新的圖片和視頻到用戶的圖片相冊。
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.三、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.四、Core Graphics 框架
CoreGraphics.framework包含Quartz 2D繪製api。
Quartz是一個原先用在OS X的先進的、向量繪製引擎。
Quartz支持路徑繪製,抗鋸齒呈現,剃度。圖像,顏色,座標空間轉換以及pdf 內容建立、顯示和分析等功能。
儘管這個api是C-based接口,但它使用了面向對象抽象來表現主要的繪製對象。所以使它easy存儲和重用圖形內容。
2.2.五、Core Image 框架
CoreImage 框架(CoreImage.framework)提供一組強大的內建過濾器來操做視頻和靜態圖像。
你能在觸摸彈起、糾正圖片以及面部和特徵檢測等不少方面使用這些內建的過濾器。這些過濾器的先進特色是它們操做在非破壞方式,即原先的圖像不被改變。
這些過濾器針對底層硬件進行了優化。所以它們是高速和有效的。
2.2.六、Core Text 框架
CoreText 框架 (CoreText.framework)提供一個對文本進行佈局和字體處理的簡單的、高性能的C-based接口。
該框架用在不使用TextKit但仍想得到在字處理應用中發現的先進文本處理能力。
該框架提供了一個智能的文本佈局引擎,包含在其餘內容周圍圍繞文本的能力。它也支持使用多種字體和呈現屬性的先進的文本風格。
2.2.七、Core Video 框架
CoreVideo 框架 (CoreVideo.framework)爲Core Media框架提供緩衝和緩衝池支持。
多數應用從不直接使用該框架。
2.2.八、Game Controller 框架
GameController 框架 (GameController.framework)讓你在應用中發現和配置針對iPhone/iPod/iPad設備的遊戲控制器。
遊戲控制器能夠是物理鏈接到iOS設備或者是經過藍牙無線鏈接。GameController框架當控制器可得到時通知你的應用讓應用能夠規定哪一個控制器輸入與你的應用相關。
2.2.九、GLKit 框架
GLKit框架 (GLKit.framework)包含一組簡化建立OpenGLES應用的Objective-C based 單元類。
GLKit支持應用開發的四個關鍵領域
1)GLKView和GLKViewController類提供一個OpenGLES視圖和其呈現循環的標準實現。
OpenGLES視圖表明應用管理底層的framebuffer對象。應用僅僅需在視圖上繪製。
2) GLKTextureLoader類提供在你的應用中使用圖像轉換和載入線程,贊成應用本身主動載入紋理圖像到應用的上下文。
能夠異步或同步載入紋理。當異步載入紋理時,應用應提供一個完畢處理塊。該處理塊在紋理載入進應用上下文時被調用。
3)GLKit框架提供向量、矩陣和3d 旋轉以及提供OpenGLES 1.1上的矩陣。4)GLKBaseEffect,GLKSkyboxEffect,和GLKReflectionMapEffect類實現給通用圖形操做提供可配置的圖形着色。尤爲GLKBaseEffect類實現了OpenGL ES 1.1規範上的光亮和材質模式,簡化了移植一個應用從OpenGL ES 1.1到OpenGL ES最後版本號的努力。
2.2.十、Image I/O 框架
ImageI/O 框架(ImageIO.framework)提供輸入和輸出圖像數據和圖像元數據的接口。
該框架利用CoreGraphics數據類型和功能,並支持在ios 上所有的可得到的標準的圖像類型。
你能使用這個框架存取Exif和IPTC元數據屬性。
2.2.十一、Media Accessibility 框架
MediaAccessibility 框架 (MediaAccessibility.framework)管理媒體文件裏closed-caption內容的呈現。
該框架與新的設置配合工做可讓用戶決定是否贊成closed-caption顯示。
2.2.十二、Media Player 框架
MediaPlayer 框架(MediaPlayer.framework)提供應用中播放聲音和視頻的高級別支持。可使用該框架作例如如下工做:
1) 播放視頻到用戶屏幕或經過AirPlay到另外的設備屏幕。
能夠全屏幕播放視頻或以可改變視圖大小的方式播放。
2)存取用戶的iTunes音樂庫。能夠播放音樂軌跡和播放列表、搜索音樂、給用戶提供一個媒體picker呈現接口。
3)配置和管理電影的回放。
4) 在鎖定屏幕和app 切換窗體上顯示NowPlaying信息。當內容經過AirPlay提交時還能顯示到AppleTV上。
5)檢測視頻經過AirPlay被串流的時間。
2.2.1三、OpenAL 框架
OpenAudio Library (OpenAL)接口是用來在應用中提供位置音效的跨平臺的標準。
可使用該接口在遊戲和其餘需要位置音效輸出的程序中實現高性能、高質量的聲音。
因爲OpenAL是跨平臺的標準,在iOS使用OpenAL編寫的代碼能夠easy地移植到不少其餘平臺。
2.2.1四、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.1五、Quartz Core 框架
QuartzCore 框架(QuartzCore.framework)包含Core Animation接口。
Core Animation是一個先進的複合技術,使用它能easy建立快和有效的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 的早期版本號中存在的傳統的管理內存的編程模式。
新建立的project本身主動使用ARC。XCODE也提供了移植工具幫助你轉換遺留的project來使用ARC.
Block Objects(塊對象)
BlockObjects是一個能夠與你的C或Objective-C代碼集成的C語言的構造塊。一個blockobject本質上是一個異步功能和相關的數據。在其餘語言中有時也被稱作closure或lambda。
Blocks尤爲用做回調或放在你需要一種easy的組合執行代碼和相關數據方式的地方。
在ios,一般在如下的場景使用Blocks:
1)做爲代理或代理方法的取代。
2) 做爲回調功能的取代。
3)爲某個一次性操做實現其完畢處理函數。
4) 在一個集合中的所有項上執行一個任務。
5)與提交隊列一塊兒執行異步任務。
Data Protection(數據保護)
DataProtection贊成應用利用設備上已有的內建的加密方法來使用用戶的敏感數據。
當應用指定一個特定的文件被保護時。系統在磁盤上以加密格式存儲該文件。當設備鎖定時,該文件的內容不能被應用和不論什麼潛在的侵入者存取。
可是當設備由用戶解鎖時,一個解密key被建立贊成你的應用存取那個文件。
用戶也可使用其餘級別的數據保護機制。
實現數據保護需要你考慮怎樣建立和管理你想保護的數據。應用必須設計在數據的建立時間加密數據。以及當用戶鎖定或解鎖設備時爲存取條件改變作好準備。
File-Sharing Support(文件共享支持)
File-SharingSupport使用戶數據文件在iTunes 9.1和之後上可被其餘應用得到。一個應用聲明支持文件共享使它的/Documents文件夾下的內容對其餘用戶可得到。用戶而後當需要時能夠把文件從iTunes移進或移出應用的Documents文件夾。
這個特徵不一樣意應用與一樣設備上的其餘應用共享應用,這需要粘貼板或一個文檔交互控制器對象。
應用爲了贊成文件共享支持,需要作例如如下工做:
一、 在應用的Info.plist文件裏添加UIFileSharingEnabled鍵。並設置其值爲YES。
2)、在你的應用的Documents中放你想共享的文件。
三、當設備插進用戶的計算機時。iTunes在選中設備的Apps標籤下顯式一個文件共享節;
四、用戶而後能夠添加文件到設備的文檔文件夾或移動文件到桌面。
支持文件共享的應用應該能夠識別文件何時添加到其Documents文件夾和作出適當的應答。好比應用可使隨意新文件的內容能夠從它的接口得到。也應該從不把Documents文件夾的文件列表呈現給用戶來請求用戶決定對那些文件作什麼。
Grand Central Dispatch
GrandCentral Dispatch(GCD)是一個BSD技術,應用能夠用來管理其任務的執行。
GCD與高優化的核組合成一個異步編程模式。來提供方便和更有效的對線程的替代。GCD也爲不少低級別的任務提供一個方便的選擇。好比讀和寫文件描寫敘述符,實現定時器和監視信號和處理事件。
In-App Purchase(應用內購買)
In-App Purchase 提供在應用中銷售應用特定的內容和服務以及來自iTunes的內容的能力。
這個功能使用StoreKit框架實現,並提供使用用戶的iTunes帳號來處理金融方面的事務需要的基礎。
應用處理所有用戶體驗和供購買的內容及可得到服務的呈現。做爲可下載的內容,你能把可下載的內容放到你本身的server或使用蘋果的server。
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接口。這些抽象提供對協議棧細節的控制,使它easy使用低級別的構造好比BSDsockets。
你能使用該框架簡化與ftp或httpserver通信或決定dnshosts的任務。使用CFNetwork 框架,你能:
一、使用BSD sockets。
二、使用SSL或TLS建立安全鏈接。
三、決定dnshosts。
四、與HTTPserver、認證HTTPserver、HTTPSserver交互。
五、與FTPserver交互。
六、公佈、解決和瀏覽Bonjour服務。
CFNetwork物理和理論上基於BSD sockets。
5)Core Data 框架
CoreData 框架 (CoreData.framework)框架是管理MVC應用中的數據模式的一種技術。
CoreData框架打算在數據模式是高結構化的應用中使用。
取代編程定義數據結構,在xcode中可使用圖形工具來創建一個表現你的數據模式的綱要。在執行時,你的數據模式實體的實例經過CoreData框架被建立、管理和得到。
經過爲你的應用管理其數據模式。CoreData大大下降了必須書寫的代碼量。
CoreData也提供例如如下功能:
一、爲優化性能在SQLite數據庫中存儲對象數據。
二、一個管理數據表視圖結果的 NSFetchedResultsController類。
三、對主要的文本編輯以外的undo/redo的管理;
四、支持屬性值的校驗。
五、支持傳播改變確保對象之間的關係保持一致性。
六、支持分組、過濾和在內存中優化數據。
假設你開始開發一個新應用或計劃對已有應用進行大的更新,應該考慮使用CoreData。
6)Core Foundation 框架
CoreFoundation 框架 (CoreFoundation.framework)是一組C-based接口,爲ios應用提供主要的數據管理和服務功能。
該框架包含例如如下支持:
集合數據類型(數組、集合等等);
應用打包Bundles。
字符串管理。
日期和時間管理
原始數據塊管理
Preferences管理;
URL和流操做;
線程
九、端口和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封裝。該框架提供例如如下功能的支持:
集合數據類型(數組、集合等等)。
應用打包Bundles;
字符串管理。
日期和時間管理
原始數據塊管理
Preferences管理;
URL和流操做;
線程和執行環。
Bonjour;
通信端口管理;
國際化;
規則表達式匹配;
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鏈接)。
使用該框架能夠與附近設備通信、easy的建立多人會話、支持可靠地傳輸順序和實時數據。
該框架爲發現和管理網絡服務提供可編程和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或蜂窩鏈接是否在用以及一個特定的主機server是否能夠存取。
四 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接口能夠完畢例如如下工做:
一、掃描藍牙外設。鏈接和斷開發現的藍牙外設;
二、聲明應用的服務。轉換ios 設備成其餘藍牙設備的外設。
三、 從IOS設備廣播iBeacon信息;
四、保存你的藍牙鏈接的狀態,當應用又一次啓動時恢復那些鏈接。
五、藍牙外設可得到性變化時得到通知。
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是可能的。
共享使它easy在一樣的一套應用之間更平滑的協做。好比,你能使用該功能來共享用戶口令或其餘元素,不然可能使每個應用都需要提示用戶。
爲了在應用之間共享數據,必須爲每個應用的Xcodeproject配置適當的權限。
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模式,意味着在這些系統移植時不會碰到太頭疼的事。