四大部分
一.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)用程序最簡單最有效的方法是使用事先渲染過的圖片,搭配上標(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框架。它提供一組簡單易用的Objective-C接口赞咙,可用于管理音頻的播放或錄制永毅。.
- OpenAL框架。它提供一組跨平臺(tái)人弓,用于發(fā)布方位音頻的接口沼死。
- Core Audio框架。它提供的接口簡單而精密崔赌,可用于播放或錄制音頻內(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í)框架可以簡化為提供對(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)一次性操作的完成處理器置侍。
- 簡化在群體所有子項(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ū)ο蟪橄蟆Mㄟ^這些抽象陕截,您可以對(duì)協(xié)議棧進(jìn)行更精細(xì)的控制驳棱,而且可以使用諸如 BSD socket這類底層結(jié)構(gòu)。您也可以通過該框架簡化諸如與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)模塊