iOS操作系統的層次結構

来源:https://www.cnblogs.com/xujinzhong/archive/2018/02/06/8422834.html
-Advertisement-
Play Games

iOS操作系統4層結構,如下表 1、Cocoa Touch是可觸摸層,這一層為我們的應用程式開發提供了各種有用的框架,並且大部分與用戶界面有關,本質上來說它負責用戶在iOS設備上的觸摸交互操作。 包括Address Book UI Framework、Event Kit UI Framework、G ...


 

iOS操作系統4層結構,如下表

 

可觸摸層 Cocoa Touch layer
媒體層 Media layer
核心服務層 Core Services layer
核心操作系統層 Core OS layer

         

 

1、Cocoa Touch是可觸摸層,這一層為我們的應用程式開發提供了各種有用的框架,並且大部分與用戶界面有關,本質上來說它負責用戶在iOS設備上的觸摸交互操作。

包括Address Book UI Framework、Event Kit UI Framework、Game Kit Framework、iAd Framework、Map Kit Framework、Message UI Framework、UIKit Framework等等,這一層基本都是基於 Objective-c的介面

2、Media是媒體層,通過它我們可以在應用程式中使用各種媒體文件,進行音頻與視頻的錄製,圖形的繪製,以及製作基礎的動畫效果。

包含Core Graphics、Core Animation、OpenGL ES、Core Text、Image I/O、Assets Library Framework、Media Player Framework、AV Foundation、OpenAL、Core Audio Frameworks、Core Media等等

3、Core Services是核心服務層,可以通過它來訪問iOS的一些服務。

包含Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch 、In App Purchase、Location Services、SQLite、XML Support等一些框架,也基本都是基於c語言的介面。

4、Core OS是位於iOS系統架構最下麵的一層是核心操作系統層,它包括記憶體管理、文件系統、電源管理以及一些其他的操作系統任務。它可以直接和硬體設備進行交互。作為app開發者不需要與這一層打交道。

包含Accelerate Framework、External Accessory Framework、Security Framework、System等幾個框架,基本都是基於c語言的介面

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和其他框架,都是建立在Foundation 框架的基礎結構之上。 Foundation框架提供許多基本的對象類和數據類型,使其成為應用程式開發的基礎。它還制定了一些約定(如用於取消分配等任務),使代碼更加一致,可復用性更好。



                                                         整個框架構詳細的架構

Cocoa Touch Layer(觸摸UI層)

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

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是從一個視圖控制器到另一個的轉換)。這些轉換代表用戶介面之間的交互。你可以使用Xcode來可視的定義這些轉換或者通過編程啟動它們。
  你能使用一個單串聯圖文件來存儲所有的應用視圖控制器和視圖,或者使用多個視圖串聯圖文件來組織用戶介面。
  在應用建立時間,Xcode讀取串聯圖文件的內容並把它分成多個能獨立載入的離散的片斷,以便獲得更好的性能。UIKit框架提供了相應的類來從程式中存取一個串聯圖的內容。

7、UI State Preservation
  UI狀態保存能夠使應用表現的一直運行,從而為用戶提供無縫的體驗。如果系統遇到記憶體壓力,系統可能安靜地強制停止一個或多個後臺應用。
  當應用從前臺移到後臺時,該服務能保存應用的視圖和視圖控制器的狀態。在下次應用重新啟動時,能夠使用先前保存的狀態信息來恢復視圖和視圖控制器到它們先前的配置,使應用表現得好像一直在運行。

8、Apple Push Notification Service
  蘋果的推送通知服務提供了一種提示用戶關於新信息的方式,即使應用當前不在激活運行狀態。
  使用該服務,你能推送文本通知,在應用圖標上增加一個標記或者在任意時間觸發聲音提示。
  這些消息讓用戶知道他們應該打開應用來接收相關信息。自Ios7開始,你甚至能推送無聲的通知來讓應用知道有了新的內容可以下載。
  為了使用IOS應用的推送通知,用戶需要做兩部分的工作。首先應用必須登記該通知服務以及在通知被提交時處理相關的通知數據。第二,你必須提供一個服務端的進程來產生通知。
  服務端的進程可以使用你自己的本地伺服器或者使用蘋果的推送通知服務。

9、Local Notifications
  本地通知作為推送通知機制的補充,可以給應用提供一種不依賴外部伺服器產生本地通知的方式。
  運行在後頭的應用能使用本地通知作為當重要的事件發生時引起用戶註意的一種方式。例如,運行在後臺的導航應用能使用本地通知來提示用戶什麼時間該轉彎了。
  應用也能調度本地通知在將來的時間提交以及使那些通知在應用不運行也能被提交。
  本地通知的一個優點是它們與你的應用是獨立的。在一個通知已被調度,系統管理它的提交。另外當通知被提交時你的應用甚至不必運行。

10、Gesture Recognizers
  手勢識別用來檢測通常類型的手勢。由於手勢識別使用與系統檢測手勢相同的試探方法,因此手勢識別為應用提供了一個一致的行為。為了使用它,你能在你的視圖上附加手勢識別功能和並給它提供一個在手勢出現時要執行的方法。
  手勢識別跟蹤原始的觸摸事件和確定它們什麼時候與想要的手勢匹配。

11、System View Controllers
  許多系統框架為標準的系統介面定義了視圖控制器。只要有可能,為了呈現一致的用戶體驗,就應該使用系統提供的視圖控制器而不是創建一個新的。

一、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.16、Sprite 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框架打算在數據模式是高結構化的應用中使用。
代替編程定義[數據結構](http://lib.csdn.net/base/datastructure),在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、JavaScriptCore 核心框架

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或定製的應用提交到用戶的設備。
電子入場券本身使用特殊的文件格式,在提交之前被加密簽名。文件格式標識關於提

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫中的統計信息在不同(精確)程度上描述了表中數據的分佈情況,執行計劃通過統計信息獲取符合查詢條件的數據大小(行數),來指導執行計劃的生成。在以Oracle和SQLServer為代表的商業資料庫,和以開源的PostgreSQL為代表的資料庫中,直方圖是統計信息的一個重要組成部分。在生成執行計劃的時 ...
  • 學習目標 使用Database Configuration Assistant(DBCA)創建資料庫 使用DBCA生成資料庫創建腳本 使用DBCA管理資料庫設計模板 使用DBCA執行其他任務 規劃資料庫 資料庫的邏輯存儲結構及其物理實施 磁碟數?使用存儲的類型? 需要多少數據文件?(計劃考慮未來增長 ...
  • 操作系統 : CentOS7.3.1611_x64 go語言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 服務模塊介紹 源碼路徑: github.com/influxdata/influxdb/services/httpd config.go : httpd服務配置相關 ...
  • 摘要: 用戶畫像(persona)的概念最早由交互設計之父Alan Cooper提出:“Personas are a concrete representation of target users.” 是指真實用戶的虛擬代表,是建立在一系列屬性數據之上的目標用戶模型。隨著互聯網的發展,現在我們說的用 ...
  • 開始前,先說一句:作為dba應該禁止所有應用使用dbms_job。 dbms_scheduler非常複雜,oracle在兩本書中專門花費不少章節描述,這兩本書分別是: 如果要詳細瞭解調度,建議詳細閱讀第二本書,之後再閱讀第一本書中的有關章節 在雲時代,資源管理變得非常重要,而dbms_schedul ...
  • 下載的是Zip解壓縮版,Windows系統,因為很久沒有在Windows上安裝過,這次安裝發現了幾處和以前安裝不一樣的地方,特記錄如下,供大家參考 MySQL配置文件位置 bin目錄下的mysql_config.pl 安裝MySQL服務 進入bin目錄 mysqld --install mysqld ...
  • 原子性atomicity(nonatomic),是關係線程安全的,但是會影響性能。如果確定不考慮線程安全問題可以使用nonatomic. 參考資料:《iPhone與iPad開發實戰-iOS經典應用剖析》 ...
  • 其實當AS升級到3.0之後,Gradle Plugin和Gradle不升級也是可以繼續使用的,但很多新的特性如:Java8支持、新的依賴匹配機制、AAPT2等新功能都無法正常使用。 Gradle Plugin升級到3.0.0及以上,修改project/build.gradle文件: Gradle升級 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...