四大部分
一.Cocoa Touch
Cocoa Touch層包含創(chuàng)建 iOS應(yīng)用程序所需的關(guān)鍵框架。上至實(shí)現(xiàn)應(yīng)用程序可視界面,下至與高級(jí)系統(tǒng)服務(wù)交互,都需要該層技術(shù)提供底層基礎(chǔ)。
高級(jí)特性
多任務(wù)
應(yīng)用程序進(jìn)入后臺(tái)后,不會(huì)被消除,用戶可以在程序進(jìn)入后臺(tái)后
數(shù)據(jù)保護(hù)
蘋果推送通知
本地通知
手勢(shì)識(shí)別
提供UIGestureRecognizer
文件共享支持
點(diǎn)對(duì)點(diǎn)服務(wù)
標(biāo)準(zhǔn)視圖控制器
- 選擇照片,視頻,拍照,錄制視頻 - UIImagePickerController
- 顯示編輯聯(lián)系人頁面 - 參考Contacts,或者AddressBookUI框架
- 顯示發(fā)送短信,郵件頁面 - 參考MessageUIKit框架
- 顯示日歷事件編輯,修改頁面 - 參考EventUIKit框架
外部設(shè)備支持
Cocoa Touch層包含的框架
UIKit(UIKit.Framework):Objective-C編程接口提供iOS應(yīng)用程序的圖形及事件驅(qū)動(dòng)的所有關(guān)鍵基礎(chǔ),具有以下核心功能
- 應(yīng)該用程序管理 - UIApplication
- 用戶界面管理 - UIWindow
- 圖形,窗口支持 - UIWindow
- 多任務(wù)支持
- 處理觸摸,移動(dòng) - UIResponser
- 標(biāo)準(zhǔn)視圖控件 - UIView 等等
- 文本,webView等操作 - UILabel,UIWebView
- 使用動(dòng)畫
- 調(diào)用相機(jī),設(shè)備支持
- 加速器數(shù)據(jù)
- 用戶圖片庫
- 遠(yuǎn)程通知,本地通知
AddressBookUI(AddressBookUI.Framework)-iOS9棄用:提供選擇聯(lián)系人,編輯聯(lián)系人界面接口
Contacts(Contacts.Framework)-iOS8+:替代AddressBookUI,提供選擇,編輯聯(lián)系人界面的接口
EventUIKit(EventUIKit.Framework):提供日歷事件編輯,添加接口
MapKit(MapKit.Framework):提供地圖編程接口
MessageUIKit(MessageUIKit):提供信息,郵件發(fā)送界面接口
PhotosUI(PhotosUI):提供圖片選擇界面接口
WatchKit:蘋果手表開發(fā)接口
Twitter:推特編程相關(guān)接口
iAd:廣告編程接口,使用蘋果廣告服務(wù)
NotificationCenter 系統(tǒng)通知
二.Media 媒體服務(wù)接口層
媒體層包含圖形技術(shù)、音頻技術(shù)和視頻技術(shù),這些技術(shù)相互結(jié)合就可為移動(dòng)設(shè)備帶來最好的多媒體體驗(yàn),更重要的是,它們讓創(chuàng)建外觀音效俱佳的應(yīng)用程序變得更加容易。您可以使用iOS的高級(jí)框架更快速地創(chuàng)建高級(jí)的圖形和動(dòng)畫,也可以通過底層框架訪問必要的工具,從而以某種特定的方式完成某種任務(wù)。
高級(jí)特性
圖形技術(shù)
高質(zhì)量的圖形是iOS應(yīng)用程序的重要組成部分。創(chuàng)建應(yīng)用程序最簡(jiǎn)單最有效的方法是使用事先渲染過的圖片,搭配上標(biāo)準(zhǔn)視圖以及UIKit框架的控件,然后把繪制任務(wù)交給系統(tǒng)來執(zhí)行。但是在某些情況下,您可能需要一些UIKit所不具有的功能,而且需要定制某些行為。在這種情況下,您可以使用下述技術(shù)管理應(yīng)用程序的圖形內(nèi)容:
- Core Graphics (也被稱為Quartz),用于處理本地2D向量渲染和圖片渲染。
- Core Animation ( Quartz Core框架的一部分),為動(dòng)畫視圖和其他內(nèi)容提供更高級(jí)別支持。
- OpenGL ES,為使用硬件加速接口的2D和3D渲染提供支持。
- Core Text,提供一個(gè)精密的文本布局和渲染引擎。
- Image I/O,提供讀取及編寫大多數(shù)圖形格式的接口。
- 資產(chǎn)庫框架(Assets Library framework),可用于訪問用戶照片庫中的照片和視頻。
音頻技術(shù)
iOS音頻技術(shù)可幫助您為用戶提供豐富多彩的音響體驗(yàn)。您可以使用音頻技術(shù)來播放或錄制高質(zhì)量的音頻,也可以用于觸發(fā)發(fā)設(shè)備的震動(dòng)功能(具有震動(dòng)功能的設(shè)備)。
- 媒體播放器框架。該框架可以讓訪問用戶的iTune庫變得很容易,并且支持播放曲目和播放列表。
- AV Foundation框架。它提供一組簡(jiǎn)單易用的Objective-C接口,可用于管理音頻的播放或錄制。.
- OpenAL框架。它提供一組跨平臺(tái),用于發(fā)布方位音頻的接口。
- Core Audio框架。它提供的接口簡(jiǎn)單而精密,可用于播放或錄制音頻內(nèi)容。您可以使用這些接口播放系統(tǒng)的警報(bào)聲音、觸發(fā)備的震動(dòng)功能、管理多聲道的緩沖和播放、對(duì)音頻內(nèi)容進(jìn)行流化處理。
視頻技術(shù)
iOS有數(shù)種技術(shù)可用于播放應(yīng)用程序包的電影文件以及來自網(wǎng)絡(luò)的數(shù)據(jù)流內(nèi)容。如果設(shè)備具有合適的視頻硬件,這些技術(shù)也可用于捕捉視頻,并可將捕獲到的視頻集成到應(yīng)用程序。
系統(tǒng)提供也提供多種方法用于播放或錄制視頻內(nèi)容,您可以根據(jù)需要選擇。選擇視頻技術(shù)的時(shí)候,請(qǐng)盡可能選擇高級(jí)框架,因?yàn)楦呒?jí)框架可以簡(jiǎn)化為提供對(duì)某種功能的支持所需的工作。下面列出的框架由高級(jí)到低級(jí)排列。其中,媒體播放器框架提供最高級(jí)的接口:
- 媒體播放器模塊:提供一組易用的接口,播放音視頻文件
- AVFoundation:提供一組Objective-C接口,用戶自定義接口,播放音視頻,也可以捕捉音視頻數(shù)據(jù)
- CoreMedia:底層的音視頻C語言接口
媒體層包含的常用框架
AssetsLibrary(iOS8+推薦使用Photo):
該框架提供一個(gè)查詢界面,您可以通過它查找用戶照片和數(shù)據(jù)。通過使用該框架,您可以訪問Photos管理的資產(chǎn),包括用戶保存的相冊(cè)以及導(dǎo)入到設(shè)備中的圖片或視頻。而且您也可以將照片或者視頻保存到用戶的相冊(cè)
AVFoundation:
該框架包含的Objective-C 類可用于播放音頻內(nèi)容。通過使用該框架,您可以播放聲音文件或播放內(nèi)存中的音頻數(shù)據(jù),也可以同時(shí)播放多個(gè)聲音,并對(duì)各個(gè)聲音的播放特定進(jìn)行控制。
- 媒體數(shù)據(jù)管理
- 媒體編輯
- 音視頻捕捉
- 音視頻播放
CoreGraphics:
包含Quartz 2D繪圖API接口 。Quartz 是Mac OS X系統(tǒng)使用的向量繪圖引擎,它支持基于路徑繪圖、抗鋸齒渲染、漸變、圖片、顏色、坐標(biāo)空間轉(zhuǎn)換、PDF文件的創(chuàng)建、顯示和解析。雖然API基于C語言,但是它使用基于對(duì)象的抽象以表示基本繪圖對(duì)象,這樣可以讓開發(fā)者可以更方便地保存并復(fù)用圖像內(nèi)容。
CoreText框架:
Core Text框架提供一個(gè)完整的文本布局引擎,您可以通過它管理文本在屏幕上的擺放。所管理的文本也可以使用不同的字體和渲染屬性。該框架專為諸如字處理程序這類需要具有精密文本處理功能的應(yīng)用程序而設(shè)計(jì)。如果您的應(yīng)用程序只需要一種文本輸入和顯示,則應(yīng)使用UIKit框架中已有的類。
媒體播放框架(MediaPlayer-iOS9+推薦AVKit):
媒體播放器框架 (MediaPlayer.framework)為應(yīng)用程序播放視頻和音頻內(nèi)容提供高級(jí)支持。通過該框架,您就可以使用標(biāo)準(zhǔn)系統(tǒng)界面播放視頻。 iOS 3.0增加了對(duì)訪問用戶iTune庫的支持。因此,您可以利用該框架播放音樂曲目、播放列表、搜索歌曲并向用戶顯示媒體選取界面。
在 iOS 3.2系統(tǒng)中,該框架發(fā)生了變化,開始支持在可改變尺寸的視圖中播放視頻(之前只支持全屏)。另外還新增數(shù)個(gè)界面用于支持配置和管理電影播放。
如需進(jìn)一步了解媒體播放器框架中的類,請(qǐng)查看媒體播放器框架參考 。如需了解如何使用該框架訪問用戶的 iTunes庫,請(qǐng)查看iPod 庫訪問編程指南。
QuartzCore框架:
Quartz Core框架 (QuartzCore.framework)包含Core Animation接口。Core Animation是高級(jí)動(dòng)畫制作和混合技術(shù),它使用經(jīng)過優(yōu)化的渲染路徑實(shí)現(xiàn)復(fù)雜的動(dòng)畫和視覺效果。它提供的高級(jí)Objective-C接口可對(duì)動(dòng)畫效果進(jìn)行配置,然后在設(shè)備硬件中進(jìn)行渲染,以此來提高程序的性能。Core Animation框架被整合到iOS的許多部分(包括UIKit框架中的許多類(如UIView)),可以為多種系統(tǒng)行為提供動(dòng)畫效果。您也可以使用該框架中的Objective-C接口直接創(chuàng)建定制動(dòng)畫。
三.CoreService 層
Core Services層為所有的應(yīng)用程序提供基礎(chǔ)系統(tǒng)服務(wù)??赡軕?yīng)用程序并不直接使用這些服務(wù),但它們是系統(tǒng)很多部分賴以建構(gòu)的基礎(chǔ)。
高階特性
塊對(duì)象
引入block概念,從本質(zhì)上說,塊對(duì)象本質(zhì)上是一個(gè)匿名函數(shù)加上該函數(shù)的伴隨數(shù)據(jù)。有些時(shí)候,其他語言也稱塊對(duì)象為 closure或者lambda。塊對(duì)象非常適用于回調(diào)函數(shù)。如果您需要有很便捷的方法將執(zhí)行代碼和相關(guān)數(shù)據(jù)組合在一起,塊對(duì)象也是很好的選擇。
在 iOS系統(tǒng)中,塊對(duì)象通常用于下述場(chǎng)合:
- 作為委托或委托方法的替代品。
- 作為回調(diào)函數(shù)的替代品。
- 用于實(shí)現(xiàn)一次性操作的完成處理器。
- 簡(jiǎn)化在群體所有子項(xiàng)上迭代執(zhí)行某種任務(wù)的操作。
- 配合分發(fā)隊(duì)列??捎糜趫?zhí)行異步任務(wù)。
Grand Central Dispatch (GCD):
iOS 4.0引入了 Grand Central Dispatch (GCD),它是BSD級(jí)別的技術(shù),可用于在應(yīng)用程序內(nèi)管理多個(gè)任務(wù)的執(zhí)行。GCD技術(shù)將異步編程模型和高度優(yōu)化內(nèi)核結(jié)合在一起,可作為多線程的便捷(且更高效)替代。同時(shí),它也為許多種底層任務(wù)( 例如讀寫文件描述符、實(shí)現(xiàn)定時(shí)器、監(jiān)視信號(hào)和處理事件等)提供替代方案。
應(yīng)用內(nèi)付費(fèi)購買:
iOS 3.0引入了應(yīng)用程序內(nèi)購買功能。通過該功能,您可以在應(yīng)用程序內(nèi)出售內(nèi)容或服務(wù)。該功能使用Store Kit框架來實(shí)現(xiàn),它可以為使用iTunes賬戶進(jìn)行的財(cái)務(wù)交易的處理提供基礎(chǔ)支持,應(yīng)用程序只需處理用戶體驗(yàn)及待售內(nèi)容或服務(wù)的展現(xiàn)。
定位服務(wù):
應(yīng)用程序可使用Core Location框架提供的接口追蹤用戶位置。此框架利用當(dāng)前可用的硬件無線電波(包括Wi-Fi、蜂窩無線或者GPS)定位用戶的當(dāng)前位置。應(yīng)用程序可以對(duì)框架提供的信息進(jìn)行裁剪,然后再將其發(fā)送給客戶, 或是用于實(shí)現(xiàn)某些特定功能。舉個(gè)例子,社交應(yīng)用程序允許您找到附近其他應(yīng)用程序用戶,然后再與之進(jìn)行通訊。
SQLite:
SQLite庫允許開發(fā)者將一個(gè)輕量級(jí)SQL數(shù)據(jù)庫嵌入到應(yīng)用程序,而且開發(fā)者不需要運(yùn)行獨(dú)立的遠(yuǎn)程數(shù)據(jù)庫服務(wù)器進(jìn)程。在此之后,開發(fā)者可以在應(yīng)用程序中創(chuàng)建本地?cái)?shù)據(jù)庫文件,管理文件中的表和記錄。雖然SQLite數(shù)據(jù)庫出于通用目的而設(shè)計(jì),但它還是針對(duì)數(shù)據(jù)庫記錄的快速訪問做過優(yōu)化。
XML 支持
Foundation框架支持使用NSXMLParser 類從XML文檔中解析元素,而libXML2庫則為操作XML內(nèi)容提供支持。 libXML2庫是開源的,它可以讓您快速地解析或?qū)懭肴我獾腦ML數(shù)據(jù),也可將XML內(nèi)容轉(zhuǎn)化為HTML文件。
Core Service層包含的常用框架
AddressBook:
支持編程訪問存儲(chǔ)于用戶設(shè)備中的聯(lián)系人信息。如果應(yīng)用程序使用到聯(lián)系人信息,則可通過該框架訪問并修改用戶聯(lián)系人數(shù)據(jù)庫的記錄。舉個(gè)例子,通過使用該框架,聊天程序可以獲取一個(gè)聯(lián)系人列表,利用此列表初始化聊天會(huì)話,并在聯(lián)系人視圖顯示列表的聯(lián)系人。
CFNetwork
CFNetwork框架 (CFNetwork.framework)提供一組高性能基于C語言的接口,它們?yōu)槭褂镁W(wǎng)絡(luò)協(xié)議提供面向?qū)ο蟪橄?。通過這些抽象,您可以對(duì)協(xié)議棧進(jìn)行更精細(xì)的控制,而且可以使用諸如 BSD socket這類底層結(jié)構(gòu)。您也可以通過該框架簡(jiǎn)化諸如與FTP或HTTP服務(wù)器通訊以及DNS主機(jī)解析這類任務(wù)。下面列舉一些可以使用 CFNetwork框架執(zhí)行的任務(wù):
Core Data 框架
iOS提供的一種MV應(yīng)用程序存儲(chǔ)方案
CoreFoundation:
提供Foundation的C語言實(shí)現(xiàn)
CoreLocation框架:
Core Location框架 (CoreLocation.framework)可用于定位某個(gè)設(shè)備當(dāng)前經(jīng)緯度。它可以利用設(shè)備具備的硬件,通過附近的GPS、蜂窩基站或者WiFi信號(hào)等信息計(jì)算用戶方位。Maps應(yīng)用程序就是利用此功能在地圖上顯示用戶當(dāng)前位置。您可以將此技術(shù)結(jié)合到應(yīng)用程序,以此向用戶提供方位信息。例如,應(yīng)用程序可根據(jù)用戶當(dāng)前位置搜索附近飯店、商店或其他設(shè)施 。
在iOS 3.0系統(tǒng)中,該框架開始支持訪問iOS設(shè)備(具有相應(yīng)硬件的設(shè)備)的方向信息。
在iOS 4.0系統(tǒng)中,該框架開始支持低能耗的方位監(jiān)視服務(wù),該服務(wù)利用蜂窩基站跟蹤用戶方位。
Core Media 框架
iOS 4.0引入了Core Media框架 (CoreMedia.framework)。此框架提供AV Foundation框架使用的底層媒體類型。只有少數(shù)需要對(duì)音頻或視頻創(chuàng)建及展示進(jìn)行精確控制的應(yīng)用程序才會(huì)涉及該框架,其他大部分應(yīng)用程序應(yīng)該都用不上。
如需進(jìn)一步了解此框架的函數(shù)和數(shù)據(jù)類型,請(qǐng)閱讀Core Media 框架參考。
Core Telephony 框架
iOS 4.0引入了Core Telephony框架(CoreTelephony.framework)。此框架為訪問具有蜂窩無線的設(shè)備上的電話信息提供接口,應(yīng)用程序可通過它獲取用戶蜂窩無線服務(wù)的提供商信息。如果應(yīng)用程序?qū)τ陔娫捄艚懈信d趣,也可以在相應(yīng)事件發(fā)生時(shí)得到通知。
Event Kit 框架
iOS 4.0引入了 Event Kit框架 (EventKit.framework)。此框架為訪問用戶設(shè)備的日歷事件提供接口。您可以通過該框架訪問用戶日歷中現(xiàn)有事件,可以增加新事件。日歷事件可包含鬧鈴,而且可以配置鬧鈴激活規(guī)則。
Foundation 框架
Foundation框架 (Foundation.framework)為 Core Foundation框架的許多功能提供Objective-C封裝。您可以參考Core Foundation框架了解前面對(duì)Core Foundation框架的描述。
Mobile Core Services 框架
iOS 3.0引入了Mobile Core Services框架 (MobileCoreServices.framework)。此框架定義統(tǒng)一類型標(biāo)識(shí)符 (UTIs)使用的底層類型。
Quick Look 框架
iOS 4.0引入Quick Look框架(QuickLook.framework),應(yīng)用程序可以用過該框架預(yù)覽無法直接支持查看的文件內(nèi)容。如果應(yīng)用程序從網(wǎng)絡(luò)下載文件或者需處理來源未知的文件,則非常適合使用此框架。因?yàn)閼?yīng)用程序只要在獲得文件后,調(diào)用框架提供的視圖控制器就可以直接在界面中顯示文件的內(nèi)容。
Store Kit 框架
iOS 3.0引入Store Kit 框架(StoreKit.framework),此框架為iOS應(yīng)用程序內(nèi)購買內(nèi)容或服務(wù)提供支持。例如,開發(fā)者可以利用此框架允許用戶解鎖應(yīng)用程序的額外功能。或者假設(shè)您是一名游戲開發(fā)人員,則可使用此特性向玩家出售附加游戲級(jí)別。在上述的兩種情況中,Store Kit 框架會(huì)處于交易過程中和財(cái)務(wù)相關(guān)的事件,包括處理用戶通過 iTunes Store賬號(hào)發(fā)出的支付請(qǐng)求并且向應(yīng)用程序提供交易相關(guān)信息。
Store Kit框架主要關(guān)注交易過程中和財(cái)務(wù)相關(guān)的事務(wù),目的是為了確保交易安全準(zhǔn)確。應(yīng)用程序需要處理交易事物的其他因素,包括購買界面和下載(或者解鎖)恰當(dāng)?shù)膬?nèi)容。通過這種任務(wù)劃分方式,您就擁有購買內(nèi)容的控制權(quán),可以決定希望展示給用戶的購買界面以及何時(shí)向用戶展示這些界面,同時(shí)也可以決定和應(yīng)用程序最匹配的交付機(jī)制。
System Configuration 框架
System Configuration框架(SystemConfiguration.framework) 可用于確定設(shè)備的網(wǎng)絡(luò)配置。您可以使用該框架判斷Wi-Fi或者蜂窩連接是否正在使用中,也可以用于判斷某個(gè)主機(jī)服務(wù)是否可以使用。
HomeKit
iOS8引入,智能家居控制
HealthKit
iOS8引入的,基于設(shè)備管理用戶健康數(shù)據(jù)
PassKit
pass憑證相關(guān)接口
四.Core OS
Core OS層的底層功能是很多其他技術(shù)的構(gòu)建基礎(chǔ)。通常情況下,這些功能不會(huì)直接應(yīng)用于應(yīng)用程序,而是應(yīng)用于其他框架。但是,在直接處理安全事務(wù)或和某個(gè)外設(shè)通訊的時(shí)候,則必須要應(yīng)用到該層的框架。
Core OS層包含的框架
Security 框架
iOS系統(tǒng)不但提供內(nèi)建的安全功能,還提供Security框架(Security.framework)用于保證應(yīng)用程序所管理之?dāng)?shù)據(jù)的安全。該框架提供的接口可用于管理證書、公鑰、私鑰以及信任策略。它支持生成加密的安全偽隨機(jī)數(shù)。同時(shí),它也支持對(duì)證書和Keychain密鑰進(jìn)行保存,是用戶敏感數(shù)據(jù)的安全倉庫。
CommonCrypto接口另外還支持對(duì)稱加密、HMAC以及Digests。實(shí)際上,Digests的功能實(shí)和OpenSSL庫常用的功能兼容,但是iOS無法使用OpenSSL庫。
在 iOS 3.0及其后續(xù)版本的系統(tǒng)中, 您可以讓所創(chuàng)建的多個(gè)應(yīng)用程序共享某些Keychain項(xiàng),這樣可以讓相同套件內(nèi)的應(yīng)用程序的互用更流暢。舉個(gè)例子,您可以在應(yīng)用程序間共享用戶密碼和及其他元素。通過這種方法,您就不需要在每個(gè)應(yīng)用程序單獨(dú)對(duì)用戶作出提示。如應(yīng)用程序需要共享數(shù)據(jù),則每個(gè)應(yīng)用程序的Xcode工程必須配備恰當(dāng)?shù)馁Y格。
CoreBlueTooth
底層藍(lán)牙編程實(shí)現(xiàn)模塊