寫(xiě)在前面
- 本文內(nèi)容主要來(lái)自iOS官方文檔, 由于英文水平有限, 有些翻譯不夠位的地方歡迎提出交流, 也期望能找到愿意分享官方文檔的你, 一起研究!
- 本文并沒(méi)有寫(xiě)出文檔當(dāng)中所有的內(nèi)容, 后繼可能會(huì)繼續(xù)更新!
- 不知道為啥, 表格的展示在CocoaChina的播客里寫(xiě)出來(lái)長(zhǎng)樣子的, 如果想看清晰一些的可以看簡(jiǎn)書(shū): http://www.jianshu.com/p/17dfb843fd04
關(guān)于iOS技術(shù) / About iOS Technologies
瞄一眼
iOS SDK 提供了你開(kāi)發(fā)原生iOS App所需要的資源. 對(duì)相關(guān)技術(shù)和SDK包含的工具的進(jìn)行簡(jiǎn)單了解, 可以幫助你在設(shè)計(jì)與實(shí)現(xiàn)App時(shí)做出更好的選擇.
iOS系統(tǒng)的結(jié)構(gòu)是分層級(jí)的
在最高級(jí)別上, iOS扮演了底層硬件和你創(chuàng)建的App之間的中間人. App并不需要直接與底層硬件溝通. 而是通過(guò)一系列的定義良好的系統(tǒng)接口來(lái)完成與硬件的通訊. 這些接口使得App在不同性能的硬件設(shè)備上都能一致的工作.
iOS相關(guān)技術(shù)的實(shí)現(xiàn)可以看成是一系列層級(jí), 展示在Figure I-1. 底層級(jí)包含基本的服務(wù)和技術(shù). 高層級(jí)依賴于底層級(jí), 提供更多復(fù)雜的服務(wù)和技術(shù).
Figure I-1** Layers of iOS
- 在寫(xiě)代碼時(shí), 建議你優(yōu)先使用高層級(jí)的框架而不是底層級(jí)的. 高層級(jí)的構(gòu)架為底層級(jí)的結(jié)構(gòu)體提供面向?qū)ο蟮某橄? 這些抽象通常會(huì)更容易寫(xiě)代碼, 因?yàn)樗鼈儨p少你要寫(xiě)的代碼數(shù)量并且已經(jīng)囊括了可能要合成的特性. 如果高層級(jí)的框架并沒(méi)有暴露所需要的特性時(shí), 再考慮使用底層級(jí)的框架和技術(shù).
Cocoa Touch 層
Cocoa Touch Layer 包含了構(gòu)建iOS App的關(guān)鍵框架. 這些框架定義了你的App顯示的樣式. 它們還提供了基本App的構(gòu)造基礎(chǔ)和對(duì)關(guān)鍵技術(shù)的支持, 如多線程, 基于觸摸的輸入, 推送通知, 和許多高層級(jí)的系統(tǒng)服務(wù). 在計(jì)劃App時(shí), 你應(yīng)該優(yōu)先調(diào)查Cocoa Touch層中的技術(shù)看看是否滿足你的需求.
Cocoa Touch Frameworks
框架 |
簡(jiǎn)單描述 |
Message UI |
Message UI 框架提供了App集成郵件與短信的支持. 支持包括在App界面中彈出一個(gè)視圖控制器界面. 可以在該視圖控制器中填入接收者, 主題, 主要內(nèi)容和任意你想包含在信息里的附件. 在彈出該視圖控制器后, 用戶可以選擇在發(fā)送之前對(duì)其做出編輯 |
Address Book UI |
Address Book UI框架是一個(gè)Object-C編程接口, 用來(lái)顯示創(chuàng)建新聯(lián)系人和編輯已經(jīng)存在聯(lián)系人信息的標(biāo)準(zhǔn)系統(tǒng)聯(lián)系人界面. 該框架簡(jiǎn)化了在App中顯示聯(lián)系人信息的操作, 同時(shí)保證所有App的聯(lián)系人界面在同一平臺(tái)上都相同 |
EventKit UI |
EventKit UI框架提供了可以彈出查看和編輯日程相關(guān)事件的標(biāo)準(zhǔn)系統(tǒng)界面的視圖控制器. 該框架建立在EventKit框架的事件相關(guān)數(shù)據(jù)之上 |
GameKit |
GamkeKit框架實(shí)現(xiàn)了對(duì)Game Centre的支持, Game Center讓用戶可以在線分享游戲相關(guān)數(shù)據(jù) |
iAd |
iAd框架讓App實(shí)現(xiàn)橫幅廣告的展示. 廣告會(huì)嵌入到你的交互界面的標(biāo)準(zhǔn)視圖中, 并在需要的時(shí)候彈出 |
MapKit |
MapKit框架提供可嵌入到App的用戶界面中的可拖拽地圖. 可以使用該框架來(lái)自定義地圖的內(nèi)容與外觀 |
NotificationCenter |
Notification Center框架提供創(chuàng)建在通知中心里顯示信息的小部件的功能 |
PushKit |
PushKit框架提供VoIP App的注冊(cè)使用支持. 該框架替代了之前注冊(cè)VoIP App的API |
UIKit |
UIKit框架提供了實(shí)現(xiàn)繪圖和事件驅(qū)動(dòng)App的重要基礎(chǔ) |
Media 層
Media Layer 包含了繪圖(graphics), 音頻(audio)和視頻(video)等多媒體體驗(yàn)的技術(shù)實(shí)現(xiàn)
Graphics Technologies
技術(shù) |
簡(jiǎn)單描述 |
UIKit graphics |
UIKit 在視圖上繪制圖片, 貝賽爾路徑和動(dòng)畫(huà)的內(nèi)容. 提供了相關(guān)類(lèi)來(lái)實(shí)現(xiàn)繪制支持. UIKit視圖提供了快速有效的渲染圖片與文本內(nèi)容的方式 |
Core Graphics |
Core Graphics (也稱為Quartz) 是iOS App原生的繪圖引擎, 提供了自定義2D矢量和圖像渲染. 盡管速度上沒(méi)有OpenGL ES的渲染速度快, 但能很好的處理自定義2D圖形渲染和動(dòng)態(tài)圖像 |
Core Animation |
Core Animation(Quartz Core框架的一部分) 是優(yōu)化App動(dòng)畫(huà)體驗(yàn)的基礎(chǔ)技術(shù). UIKit的view使用Core Animation來(lái)提供視圖層級(jí)的動(dòng)畫(huà)支持. 可以直接使用Core Animation來(lái)控制動(dòng)畫(huà)的行為 |
Core Image |
Core Image 為無(wú)損操作視頻與靜態(tài)圖片提供了高級(jí)支持 |
OpenGL ES |
OPenGL ES 使用硬件加速接口(Hardware-accelerated interfaces)處理高級(jí)的2D與3D渲染. 該框架通常由游戲開(kāi)發(fā)人員, 或是想實(shí)現(xiàn) immersive graphical(可浸入圖形) 體驗(yàn)的任何人. 該框架提供了渲染過(guò)程的完全控制和提供創(chuàng)建平滑動(dòng)畫(huà)的幀速率 |
GLKit |
GLKit 是Object-C的類(lèi)的集合, 這些類(lèi)提供基于對(duì)象的接口來(lái)使用OpenGL ES的功能 |
Metal |
Metal 提供了使用非常低開(kāi)銷(xiāo)(low-overhead)來(lái)訪問(wèn)A7 Gpu, 并實(shí)現(xiàn)難以置信的高性能去執(zhí)行復(fù)雜的動(dòng)畫(huà)渲染和計(jì)算任務(wù). |
TextKit |
TextKit 是UIKit的一部分, 用來(lái)執(zhí)行文字排板和文字管理. 如果你的App要使用高級(jí)的文字操作, TextKit可以與其余的View進(jìn)行無(wú)縫整合 |
CoreText |
CoreText是底層的基于C語(yǔ)言的框架, 用來(lái)處理高級(jí)的文字排板和布局 |
Image I/O |
Image I/O 提供了渲染和寫(xiě)入大部份格式的圖片的接口. |
Photos Library |
Photos 和 PhotosUI 框架提供了訪問(wèn)用戶圖片, 視頻和媒體的功能, 在App需要整入獲取用戶內(nèi)容時(shí)使用 |
Audio Technologies
技術(shù) |
簡(jiǎn)單描述 |
Media Player |
該高層級(jí)的框架提供了訪問(wèn)用戶的iTunes庫(kù)和播放的曲目和播放列表的簡(jiǎn)單方式. 當(dāng)App需要快速接入音頻或不需要做播放狀態(tài)控制時(shí)可以使用該框架 |
AV Foundation |
AV Foundation 是管理錄音和播放音頻/視頻的基于Object-C的接口. 可以使用該框架錄制音頻或需要精確的控制音頻播放過(guò)度時(shí)使用 |
OpenAL |
OpenAL 是用來(lái)傳遞可定位音頻的行業(yè)標(biāo)準(zhǔn)技術(shù). 游戲開(kāi)發(fā)者會(huì)頻繁的使用該框架一系統(tǒng)跨平臺(tái)接口來(lái)傳遞高質(zhì)量音頻 |
Core Audio |
Core Audio是提供將錄音, 音頻播放和MIDI內(nèi)容由簡(jiǎn)單到精密處理的功能的一系列框架. 該框架給需要精密控制音頻的高級(jí)開(kāi)發(fā)使用 |
Video Technologies
技術(shù) |
簡(jiǎn)單描述 |
UIImagePickerController |
UIImagePickerController 是用來(lái)選擇用戶媒體文件的視圖控制器. 可以使用該類(lèi)快速的獲取用戶存在的圖片, 視頻, 或者讓用戶捕獲新內(nèi)容. |
AVKit |
AVKit框架提供了一系列簡(jiǎn)單的展示視頻的接口. 該框架支持全屏和局部展示的視頻播放以及提供用戶可選的播放控制 |
AV Foundation |
AV Foundation提供了高級(jí)的視頻播放和錄制的能力. 當(dāng)需要更多的控制視頻展示或視頻錄制時(shí)使用, |
Core Media |
Core Media定義了底層數(shù)據(jù)類(lèi)型和操作媒體的接口. 大部分App不需要直接使用該框架, 不過(guò)當(dāng)你需要對(duì)視頻內(nèi)容進(jìn)行罕見(jiàn)的控制時(shí)會(huì)相當(dāng)有用 |
Core Services 層
Core Services Layer 包含了App的基本系統(tǒng)服務(wù). 其中關(guān)鍵的框架是 Core Foundation 與 Foundation, 定義了所有App使用的基本數(shù)據(jù)類(lèi)型. Core Services Layer還包含了支持定位, iCloud, 社交媒體和網(wǎng)絡(luò)的特征對(duì)應(yīng)的特殊技術(shù).
Core Services Frameworks
框架 |
簡(jiǎn)單描述 |
Accounts Framework |
Accounts框架為明確的用戶賬號(hào)提供了單一登陸模式. 單一登陸模式避免了提示用戶區(qū)分多個(gè)賬號(hào)的必要性, 以提高用戶體驗(yàn). 單一登陸也可管理App的賬號(hào)授權(quán)處理來(lái)簡(jiǎn)化開(kāi)發(fā)模式. 可以將框架與Socical框架結(jié)合使用 |
Address Book Framework |
Address Book框架提供了用戶聯(lián)系人數(shù)據(jù)庫(kù)的編程訪問(wèn). 如果App使用聯(lián)系人信息, 可以通過(guò)該框架訪問(wèn)和配置聯(lián)系人信息 |
Ad Support Framework |
Ad Support框架提供一個(gè)標(biāo)識(shí), 為App做廣告用途提供訪問(wèn) |
CFNetwork Framework |
CFNetwork框架處來(lái)處理網(wǎng)絡(luò)協(xié)議的基于C的面向?qū)ο蟮母咝阅艿某橄蠼涌诩? 這些抽象提供了協(xié)議棧的詳細(xì)控制, 并能更容易的使用底層的構(gòu)造比如BSD Socket. 可以使用該框架來(lái)簡(jiǎn)化任務(wù)比如與FTP服務(wù)和Http服務(wù)進(jìn)行通信或解析DNS hosts |
CloudKit Framework |
CloudKit提供了在App與iCloud之間進(jìn)行數(shù)據(jù)轉(zhuǎn)移的渠道. 與其它不可察覺(jué)的iCloud技術(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)移不同, 在數(shù)據(jù)轉(zhuǎn)移時(shí)CloudKit給你控制權(quán)限. 你可以使用CloudKit管理所有類(lèi)型的數(shù)據(jù) |
Core Data Framework |
Core Data框架是為MVC模式的App提供數(shù)據(jù)模型管理的技術(shù). Core Data是為數(shù)據(jù)模型已經(jīng)高度結(jié)構(gòu)化的App準(zhǔn)備的. 你可以使用Xcode的圖形化工具來(lái)構(gòu)建一個(gè)schema來(lái)表示數(shù)據(jù)模型, 取代以編程的方式定義數(shù)據(jù)結(jié)構(gòu). 在運(yùn)行時(shí), 透過(guò)Core Data框架, 數(shù)據(jù)模型實(shí)體的實(shí)例會(huì)被創(chuàng)建, 管理并且使用 |
Core Foundation Framework |
Core Foundation框架是基于C的接口集合, 提供iOS App的基本數(shù)據(jù)管理和功能服務(wù) |
Core Location Framework |
Core Location框架為App提供位置與方向的信息. 該框架使用星載GPS, 移動(dòng)蜂窩網(wǎng)絡(luò), Wifi廣播來(lái)發(fā)現(xiàn)用戶當(dāng)前的經(jīng)緯度. 你可以通過(guò)整合該技術(shù)到App中來(lái)為用戶提供基于位置的信息 |
Core Media Framework |
Core Media框架了提供了AV Foundation框架使用的底層的媒體類(lèi)型. 大部分App不需要使用該框架, 僅少部分需要精確的控制音頻與視頻內(nèi)容的創(chuàng)建和呈現(xiàn)的開(kāi)發(fā)者使用 |
Core Motion Framework |
Core Motion框架提供了訪問(wèn)設(shè)備上所有可用的基于動(dòng)作事件的單一接口集合 |
Core Telephony Framework |
Core Telephony框架提供了作用于具備蜂窩無(wú)線網(wǎng)絡(luò)的手機(jī)的相關(guān)信息的接口. App可以使用該框架獲取用戶的蜂窩網(wǎng)絡(luò)運(yùn)營(yíng)商的相關(guān)信息 |
EventKit Framework |
EventKit框架提供了訪問(wèn)用戶設(shè)備的日程表事件的接口 |
Foundation Framework |
Foundation框架可以將Core Foundation框架中許多功能轉(zhuǎn)化成Object-C的功能 |
HealthKit Framework |
HealthKit是一個(gè)管理用戶健康相關(guān)數(shù)據(jù)的新框架 |
HomeKit Framework |
HomeKit是一個(gè)連接并管理用戶家中已經(jīng)連接的設(shè)備的新框架 |
JavaScript Core Framework |
JavaScript Core框架為許多標(biāo)準(zhǔn)的JavaScript對(duì)象提供了Object-C的封裝類(lèi). 使用該框架來(lái)使用JavaScript代理和解析JSON數(shù)據(jù) |
Mobile Core Services Framework |
Mobile Core Services框架定義了UTIs(統(tǒng)一類(lèi)型標(biāo)識(shí))使用的底層類(lèi)型 |
Multipper Connectivity Framework |
Multiplier Connectivity框架提供了發(fā)現(xiàn)附近設(shè)備并在不需要請(qǐng)求網(wǎng)絡(luò)連接的情況下直接與他們通訊的支持 |
NewsstandKit Framework |
Newsstand App 提供了用戶閱讀雜志和新聞的核心位置, 使用NewsstandKit來(lái)初始化新雜志和新聞后臺(tái)下載 |
PassKit Framework |
Passbook app 為用戶提供了保存商業(yè)的優(yōu)惠卷, 登機(jī)牌, 活動(dòng)門(mén)票和折扣卡的地方. 取代攜帶這些東西的實(shí)物代表, 現(xiàn)在用戶可以將他們保存到iOS設(shè)備中并與以前一樣同樣的使用. PassKit框架提供了將這些項(xiàng)目整合到你App中的Object-C接口 |
Quick Look Framework |
Quick Look框架提供了為App不能直接支持的文件內(nèi)容進(jìn)行預(yù)覽功能的接口. 該框架的主要針對(duì)為從網(wǎng)絡(luò)下載文件或者在其它未知源中工作的App. 在獲取文件類(lèi)型后, 你使用該框架提供的控制器在你的界面上直接顯示內(nèi)容信息 |
Safari Services Framework |
Safari Services框架提供了添加URL到用戶的Safari的Reading List (閱讀列表)的編程接口 |
Social Framework |
Social框架提供了訪問(wèn)用戶的社交媒體賬戶的單一接口, 該框架支持Twitter, Facebook, 新浪微博等其他社交賬號(hào) |
StoreKit Framework |
StoreKit框架提供了在iOS App中購(gòu)買(mǎi)內(nèi)容和服務(wù)的支持, 即稱為內(nèi)購(gòu) (In-App Purchase) 的功能 |
System Configuration Framework |
System Configuration框架提供了可能性檢測(cè)接口, 可以用來(lái)決定設(shè)備的網(wǎng)絡(luò)配置情況. 你可以使用該框架來(lái)決定當(dāng)前正在使用的Wifi或者移動(dòng)蜂窩網(wǎng)絡(luò), 判斷一個(gè)詳細(xì)的host服務(wù)是否可以被訪問(wèn) |
WebKit Framework |
WebKit框架可以讓HTML內(nèi)容在App中進(jìn)行顯示. 除了顯示HTML外, 你可以提供基本編輯支持以便用戶可以替換文本和操作document的文本與屬性, 包含CSS樣式屬性. WebKit還支持創(chuàng)建和編輯DOM(Document Object Model : 文檔對(duì)象模型)級(jí)別的HTML內(nèi)容. 比如, 你可以擴(kuò)展一個(gè)頁(yè)面的鏈接列表, 在WebView顯示該document之前配置并替換它們 |
Core OS 層
Core OS Layer 包含了大部分其它技術(shù)依賴的底層功能. 即使你沒(méi)有在App中直接使用這些技術(shù), 但他們很可能在其他框架中被使用. 在某些情況下, 當(dāng)你需要直接處理數(shù)據(jù)加密或與外部硬件附件進(jìn)行通訊時(shí), 你確實(shí)需要使用該層的相關(guān)框架
技術(shù) |
簡(jiǎn)單描述 |
Accelerate Framework |
Accelerate框架包含了數(shù)字信號(hào)處理(Digital Signal Processing), 線性代數(shù)(Linear algebra)和圖片處理計(jì)算(image-processing calculations)的接口. 比起寫(xiě)一個(gè)你自己的版本的接口, 使用該框架的優(yōu)勢(shì)在于其充分利用了存在于iOS設(shè)備的所有硬件配置信息. 因此, 你可以只寫(xiě)一遍代碼就可以確定其能有效的運(yùn)行的所有設(shè)備上 |
Core Bluetooth |
Core Bluetooth 框架允許開(kāi)發(fā)者與低功耗藍(lán)牙設(shè)備附件進(jìn)行交互. 該框架的Object-C接口可以實(shí)現(xiàn)下列功能: 1. 掃描藍(lán)牙附件并進(jìn)行連接或斷開(kāi)連接 2. 從你的App公開(kāi)服務(wù)(Services), 將iOS設(shè)備變成其他藍(lán)牙設(shè)備的外部設(shè)備 3. 從iOS設(shè)備廣播iBeacon信息 4. 保存藍(lán)牙連接的狀態(tài)信息并在運(yùn)行App后恢復(fù)連接 5. 訂閱可用的藍(lán)牙外部設(shè)備并在發(fā)生改變時(shí)得到通知 |
External Accessory Framework |
External Accessory 框架提供了與連接到基于iOS系統(tǒng)設(shè)備的硬件附件進(jìn)行通訊的支持. 可以使用30針基座接口連接或使用藍(lán)牙無(wú)線連接到附件上. External Accessory框架為你提供了獲取每一個(gè)可用附件設(shè)備的信息和初始化通訊會(huì)話的方法. 之后, 你可以使用其提供的命令隨意的直接操控附件. |
Generic Security Services Framework |
Generic Security Services框架為iOS App提供了一系列安全相關(guān)的標(biāo)準(zhǔn)服務(wù). 該框架的基本接口指定 IETF RFC 2743 和 RFC 4401. 除了基本接口外, iOS還額外包含證書(shū)(非標(biāo)準(zhǔn)證書(shū), 但大部App需要)管理 |
Local Authentication Framework |
Local Authentication 框架可以讓你使用Touch ID來(lái)鑒別用戶.一些App需要安全訪問(wèn)它的全部?jī)?nèi)容, 或者其他人需要安全訪問(wèn)特定部分的信息或選項(xiàng). 不管哪種情況, 你可以在開(kāi)始之前請(qǐng)求用戶進(jìn)行驗(yàn)證鑒定. 使用該框架向用戶顯示彈窗, 帶有App指定的用戶驗(yàn)證的目的原因說(shuō)明. 當(dāng)App得到回應(yīng)時(shí), 可以根據(jù)用戶是否成功驗(yàn)證做出反應(yīng) |
Network Extension Framework |
Network Extension 框架提供了配置和控制VPN通道的支持. 使用該框架創(chuàng)建VPN配置信息. 你可以手動(dòng)開(kāi)始VPN通道或者提供按需分配規(guī)則來(lái)開(kāi)始VPN通信來(lái)響應(yīng)指定的事件 |
Security Framework |
除了內(nèi)置的安全功能外, iOS還提供了可以保證你的App管理的數(shù)據(jù)的安全的直接加密框架. 該框架提供用于證書(shū), 公鑰, 私鑰和信任策略的管理的接口. 它支持隨機(jī)數(shù)字的安全密碼生成. 還支持裝飾密碼的鑰匙(Key)和證書(shū)保存到鑰匙串(Keychain)中, 鑰匙串是用來(lái)存放用戶敏感數(shù)據(jù)的安全倉(cāng)庫(kù) |
System |
iOS提供了一系列接口, 可以訪問(wèn)許多操作系統(tǒng)底層特性. 你的App通過(guò) LibSystem 庫(kù)來(lái)訪問(wèn)這些特性. 該接口基于C基礎(chǔ), 提供以下支持: 1. 并發(fā)機(jī)制 (POSIX線程 和 GCD) 2. 網(wǎng)絡(luò) (BSD sockets) 3. 訪問(wèn)文件系統(tǒng) 4. 標(biāo)準(zhǔn)輸入輸出 5. Bonjour 與 DNS服務(wù) 6. 區(qū)域信息 7. 內(nèi)存分配 8. Math運(yùn)算 Core OS 技術(shù)的許多頭文件都定義在/usr/include/ 目錄下, 是你的Xcode安裝目錄的目標(biāo)SDK的路徑
|
64-Bit Support |
iOS最初設(shè)計(jì)為使用32位架構(gòu)的設(shè)備的二進(jìn)制文件提供支持. 在iOS7后, 引進(jìn)了編譯, 鏈接和調(diào)試基于64位框架的二進(jìn)制文件. 所有的系統(tǒng)庫(kù)與框架都為64位做好準(zhǔn)備, 意味它們都支持在32位和64位App中進(jìn)行使用. 當(dāng)對(duì)64位的運(yùn)行時(shí)進(jìn)行編譯時(shí), App或許運(yùn)行得更快因?yàn)?4位模式有可用的額外的處理器資源 |
|