IOS框架和服務
在iOS中框架是一個目錄,包含了共享資源庫,用於訪問該資源庫中儲存的程式碼的標頭檔案,以及影象、聲音檔案等其他資源。共享資源庫定義應用程式可以呼叫的函式和方法。
iOS為應用程式開發提供了許多可使用的框架,並構成IOS作業系統的層次架構,分為四層,從上到下依次為:Cocoa Touch Layer(觸控UI層)、MediaLayer(媒體層)、Core Services Layer(核心服務層)、Core OS Layer(核心OS層)。
低層次框架提供IOS的基本服務和技術,高層次框架建立在低層次框架之上用來提供更加複雜的服務和技術,較高階的框架向較低階的結構提供面向物件的抽象。
在開發應用時應儘可能使用較高階的框架。如果要開發的國內在高層框架中沒有提供,你也可以使用較低層框架和技術。
Foundation和 UIKit框架是應用程式設計用到的兩個主要的框架,能夠滿足大多數應用程式的開發需求。
UIKit框架提供的類,用於建立基於觸控的使用者介面。所有 iOS 應用程式都是基於 UIKit, 沒有這個框架,就無法交付應用程式。UIKit提供應用程式的基礎架構,用於在螢幕上繪圖、處理事件,以及建立通用使用者介面及其中元素。UIKit還通過管理螢幕上顯示的內容,來組織應用程式。
Foundation框架為所有應用程式提供基本的系統服務。應用程式以及 UIKit
整個框架架構圖如下:
一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物件。應用只需在檢視上繪製。
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.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)與提交佇列一起執行非同步任務。
相關推薦
IOS框架和服務
在iOS中框架是一個目錄,包含了共享資源庫,用於訪問該資源庫中儲存的程式碼的標頭檔案,以及影象、聲音檔案等其他資源。共享資源庫定義應用程式可以呼叫的函式和方法。 iOS為應用程式開發提供了許多可使用的框架,並構成IOS作業系統的層次架構,分為四層
實施微服務需要哪些基礎框架和技術熱點
文章來自微信公眾號:DevOps 引 言 微服務(MicroServices)架構是當前網際網路業界的一個技術熱點,圈裡有不少同行朋友當前有計劃在各自公司開展微服務化體系建設,他們都有相同的疑問:一個微服務架構有哪些技術關注點(technical concerns)?需要哪些基
GitHub中最強大的iOS Notifications和AlertView框架,沒有之一!
FFToast是一個非常強大的iOS message notifications和AlertView擴充套件。它可以很容易實現從螢幕頂部、螢幕底部和螢幕中間彈出一個通知。你可以很容易的自定義彈出的View. GitHub連結:https://github.com/imlifengfeng/F
Idea釋出Axis2服務端、建立WebService客戶端和spring整合Axis2框架釋出服務?
一、使用預設的WEBSERVICE服務 1 新建專案 2 選擇 java->Java EE(由J2EE 8改為J2EE 7的版本,解決建立WEBSERVICE專案無WEB.XML的問題) 3 建立WEBSERVICE服務端 4 專案結構如下 5 生成wsd
用.Net打造一個移動客戶端(Android/IOS)的服務端框架NHM(一)
本文的目的 隨著移動網際網路的迅猛發展,關於移動客戶端技術解決方案的討論越來越多,本系列文章將試圖針對移動客戶端開發中的伺服器端開發,提供一個.NET平臺的框架解決方案。 由於本文是探討針對.Net服務端程式設計,所以理論上與手機端平臺無關,但為了方便描述,本文所提供的例子均為Android平臺,服務端程式
從Netflix的Hystrix框架理解服務熔斷和服務降級
伴隨著微服務架構被宣傳得如火如荼,一些概念也被推到了我們面前,其實大多數概念以前就有,但很少被提的這麼頻繁。想起有人總結的一句話,微服務架構的特點就是:“一解釋就懂,一問就不知,一討論就吵架”。 圖片 來自網路,如果涉及版權請與我們聯絡。 其實對老外的總結能力一
mina 框架java服務端的搭建和通訊。
不會用mina的請各種百度谷歌吧。。 新建MainServer.java類,繼承於Thread並實現main函式。 然後就在MainServer類裡搭建main結構啦。 類如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
iOS—常用iOS、Mac框架和庫及常用中文開發部落格
DateTimeKit - 一個超讚的時間處理的庫,Joda-Time ! 他能幫你輕鬆處理時區,處理時間加減,計算到期時間等等場景下的問題。SwiftDate - 特別完整、強大的日期時間操作管理類庫。它幾乎涵蓋了已知開源日期類庫所有優秀特性。 他能幫你輕鬆處理時區,處理時間加減,計算到期時間等等場景下
iOS 框架搭建過程1-歡迎頁和引導頁
首先介紹一下這兩個東西:其實歡迎頁和引導頁是一個東西,只是歡迎頁每次app開啟都顯示,引導頁只有第一次安裝或者版本更新的時候顯示。 所以重點來說一下歡迎頁:建立工程之初會有一個LaunchScreen.storyboard,我沒有用這個,所以要把storyboard上的Us
讀-李林峰-分散式服務框架和原理14-17
流量控制 通過合理設定流控配置,避免消費方的併發請求數超出服務提供方的承受能力,導致服務不可用。 靜態流控 靜態流控主要是針對客戶端的併發請求進行控制,根據SLA的約定的QPS做全域性流量控制。 傳統靜態流控設定,根據叢集服務節點數量和流控閾值,計
ABP開發框架前後端開發系列---(15)ABP框架的服務端和客戶端快取的使用
快取在一個大型一點的系統裡面是必然會涉及到的,合理的使用快取能夠給我們的系統帶來更高的響應速度。由於資料提供服務涉及到資料庫的相關操作,如果客戶端的併發數量超過一定的數量,那麼資料庫的請求處理則以爆發式增長,如果資料庫伺服器無法快速處理這些併發請求,那麼將會增加客戶端的請求時間,嚴重者可能導致資料庫服務或者應
從數據庫、代碼和服務器對PHP網站Mysql做性能優化
now() image 最好 提高 mysql 避免 允許 大數 rdate 數據庫優化是PHP面試幾乎都會被問到的事情,也是我們工作中應該註意的事情,當然,如果是小網站無所謂優化不優化,網站訪問量大了自然會暴漏數據庫的瓶頸,這個瓶頸是各方面問題綜合導致的,下面我們來做下數
OpenCV-iOS框架的導入與配置
targe imp lan 文件 3.2 註意 nbsp ifd 官方文檔 最近在研究OpenCV,在導入的時候遇到了問題,查了官方文檔,又在網上找了幾圈,沒有合適的。自己整理一下! ---------------------------------------------
CloudStack+XenServer詳細部署方案 交換機配置和服務器連線
cloudstack+xenserver詳細部署方案CloudStack+XenServer詳細部署方案(2):交換機配置和服務器連線 本文將根據設計文檔, 對交換機進行配置和服務器網絡連線方式進行說明.Step1.交換機規劃, 根據功能將交換機端口分為三個部分:管理區域(交換機1 – 16 口): 用於
《Linux深度攻略》一書,講述Linux日常系統管理和服務器配置內容
linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和
一鍵屏蔽135、137、138、139、445危險端口和服務
windows 信息安全 勒索病毒 一鍵關閉139端口 一、勒索病毒-永恒之藍現狀簡介2017年5月12日20時左右,國家網絡與信息安全信息中心緊急通報:新型病毒從5月12日起在全球範圍傳播擴散,已影響到包括我國用戶在內的多個國家的用戶。該勒索病毒利用Windows操作系統445端口存在的漏洞
上傳文件到數據庫和服務器
上傳文件上傳文件我們需要做三步。①在頁面中能選擇文件上傳;②能夠將二進制數據轉為byte數組,然後存入數據庫中,註意數據庫字段的類型;③將文件保存到服務器。 @RequestMapping(value = "/upload") public void upload(UpLoadFile uploadFile
客戶端和服務端如何使用Token和Session
cnblogs blank style ssi exception font 統一 判斷 用戶 一、我們先解釋一下他的含義: 1、Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作
紅色警報!intel數百萬工作站和服務器芯片隱藏安全漏洞!
英特爾 計算機 應用程序 服務器 處理器 具體來說,這個漏洞存在於英特爾的主動管理技術(AMT)、標準可管理性(ISM)和小企業技術(SBT)固件版本6至11.6中。據這家芯片廠商聲稱,這個安全漏洞讓“無特權的攻擊者得以控制這些產品提供的可管理性功能。”那就意味著,黑客有可能登錄進入到高危
值得推薦的C/C++框架和庫
its ++ sqli 解析生成 得到 types dns java 定時 Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個並發連接去測試網站的負載