框架是一個目錄,這個目錄包含了共享庫寇漫,訪問共享庫里代碼的頭文件刊殉,和其它的圖片和聲音的資源文件。一個共享庫定義的方法或函數(shù)可以被應(yīng)用程序調(diào)用州胳。
IOS提供了很多你可以在應(yīng)用程序里調(diào)用的框架记焊。要使用一個框架,需要將它添加到你的項(xiàng)目中栓撞,你的項(xiàng)目才可以使用它亚亲。許多應(yīng)用程序都使用了如Foundation、UIKit腐缤、和Core Graphics這些框架捌归。根據(jù)你為應(yīng)用程序選擇的模版,相關(guān)的框架就已經(jīng)被自動引入了岭粤。如果默認(rèn)加入的框架不能滿足你的應(yīng)用程序的需求惜索,你也可以加入需要的框架。
看看HelloWorld.xcodeproj項(xiàng)目里都包含了哪些框架(注:HelloWorld.xcodeproj是《Your First iOS App tutorial 》這篇教程里的一個項(xiàng)目)
1.在XCode里打開HelloWorld.xcodeproj項(xiàng)目(如果還沒有打開)
2. 在project navigator窗口里點(diǎn)擊剃浇,點(diǎn)擊Frameworks目錄前面的三角形圖標(biāo)巾兆。你會看到:UIKit.framework,Foundation.framework, 和CoreGraphics.framework
3. 點(diǎn)擊任意一個framework前面的三角,然后再點(diǎn)擊Headers前面的三角虎囚,可以看到框架里的頭文件角塑。
每個框架對應(yīng)IOS系統(tǒng)里的一層,每層建立在它下面層的上面淘讥。應(yīng)該盡量使用上層的框架來代替下面的框架圃伶。更高層次的框架是對底層框架基于對象的抽象。
iOS應(yīng)用程序基于Foundation和UIKit框架
在你開發(fā)程序時(shí)蒲列,主要使用框架就是Foundation和UIKit窒朋,因?yàn)樗鼈儼四阈枰拇蟛糠謻|西。
Foundation框架為所有的應(yīng)用程序提供基本系統(tǒng)服務(wù)
你的應(yīng)用程序蝗岖,UIKit和其它的框架都是建立在Foundation框架上面的侥猩。Foundation框架是用Object-C對Core Foundation框架里許多特性的封裝。
使用Foundation可以:
- 創(chuàng)建和管理集合抵赢,比如數(shù)組和字典
- 訪問存儲在應(yīng)用程序里的圖片和其它資源
- 創(chuàng)建和管理字符串
- 提交和接收通知
- 創(chuàng)建日期和時(shí)間對象
- 自動發(fā)現(xiàn)IP網(wǎng)絡(luò)上的設(shè)備
- 操作URL流
- 執(zhí)行異步代碼
你已經(jīng)在《Your First iOS App》里使用到了Foundation框架欺劳。比如,你使用一個NSString類的實(shí)例存儲用戶輸入的userName铅鲤。你還使用了Foundation框架的initWithFormat方法創(chuàng)建了一個字符串划提。
UIKit框架提供創(chuàng)建基于觸摸用戶界面的類
所有的iOS應(yīng)用程序都基于UIKit巴帮,你不能是應(yīng)用程序脫離這個框架台夺。UIKit提供了在屏幕上繪制的機(jī)制,捕獲事件靡砌,和創(chuàng)建通用用戶界面元素驼仪。UIKit也通過管理顯示在屏幕上的組件來組織復(fù)雜的項(xiàng)目掸犬。
使用UIKit可以:
- 構(gòu)建和管理你的用戶界面
- 捕獲觸摸和基于移動的事件
- 呈現(xiàn)文字和web內(nèi)容
- 優(yōu)化你的多任務(wù)程序
- 創(chuàng)建定制的用戶界面元素
在《YouFirst iOS App Tutorial》里,你也使用到了UIKit绪爸。當(dāng)你仔細(xì)查看程序是怎么運(yùn)行起來的時(shí)候湾碎,你會看到UIApplicationMain函數(shù)創(chuàng)建一個UIApplication類的實(shí)例,這個實(shí)例會捕獲進(jìn)來的用戶事件奠货。你實(shí)現(xiàn)UITextFieldDelegate協(xié)議介褥,然后在用戶按下Done時(shí)隱藏鍵盤。實(shí)際上,你是在使用UIKit創(chuàng)建用戶界面上的UITextField柔滔, UILabel溢陪,和UIButton類。
你需要知道的其它重要的框架
Core Data , Core Graphics, Core Animation,和OpenGLES框架都是高級的技術(shù)睛廊。所以這些框架對于你開發(fā)應(yīng)用程序也是很重要的形真,它們都需要時(shí)間去學(xué)習(xí)和掌握。
Core Data框架管著理應(yīng)用程序數(shù)據(jù)模型
Core Data提供對象的管理超全,使用Core Data咆霜,你可以創(chuàng)建模型對象,并管理這些對象嘶朱。你管理這這些對象間的聯(lián)系并修改數(shù)據(jù)蛾坯。Core Data提供的內(nèi)建SQLlite技術(shù)可以高效的管理數(shù)據(jù)。
使用Core Data可以:
- 在庫里存儲和接收對象
- 提供基本的undo/redo
- 自動驗(yàn)證屬性值
- 過濾疏遏、分組和優(yōu)化內(nèi)存中的數(shù)據(jù)
- 用[NSFetchedResultsController]管理表視圖中的結(jié)果
- 支持基于文檔的應(yīng)用程序
Core Graphics框架幫助你創(chuàng)建圖形
高質(zhì)量的圖形對于所有的iOS應(yīng)用程序都是很重要的脉课。在iOS中最簡單且最快捷的創(chuàng)建圖形的方式是使用UIKit框架提供的基于預(yù)渲染圖形的視圖和控件,然后讓UIKit和iOS完成繪制改览。但是當(dāng)你需要創(chuàng)建復(fù)雜的圖形時(shí)下翎,Core Graphics則提供了更底層的庫來幫助你。
使用Core Graphics可以:
- 創(chuàng)建基于路徑的繪圖
- 抗鋸齒渲染
- 添加梯度宝当、圖片和顏色
- Use coordinate-space transformations.
- 創(chuàng)建视事、顯示和分析PDF文檔
Core Animation允許你創(chuàng)建高級的動畫和虛擬效果
UIKit提供建立在Core Animation之上的動畫。如果你需要比UIKit能力更高級的功能庆揩,可以直接使用Core Animation俐东。Core Animation接口包含在Quartz Core框架里。使用Core Animation可以創(chuàng)建嵌套的對象订晌,并且可以對它們操作虏辫、旋轉(zhuǎn)、縮放和轉(zhuǎn)換锈拨。使用Core animation砌庄,你可以創(chuàng)建動態(tài)的用戶界面而不用使用更底層的圖形API,如OpenGL ES奕枢。
使用Core Animation可以:
- 創(chuàng)建定制動畫
- 添加定時(shí)函數(shù)和圖形
- 支持幀動畫
- Specify graphical layout constraints.
- Group multiple-layer changes into anatomic update.
OpenGL ES 框架提供2D和3D繪圖工具
OpenGL ES支持2D和3D繪圖娄昆,Apple的OpenGL ES實(shí)現(xiàn)通過硬件提供了高速的全屏游戲式的應(yīng)用程序。
使用OpenGL ES可以:
- 創(chuàng)建2D和3D圖形
- 創(chuàng)建更復(fù)雜的圖形缝彬,比如數(shù)據(jù)虛擬化萌焰、模擬飛行,或者視頻游戲
- 訪問底層圖形設(shè)備
根據(jù)需要向項(xiàng)目中添加其它框架
還有許多框架可以添加到你的程序里谷浅。當(dāng)你決定使用一個框架但項(xiàng)目里卻沒有引入這個框架時(shí)扒俯,你就需要將它加入到你的項(xiàng)目里奶卓。
將別的框架添加到工程里
1 打開工程
2 點(diǎn)擊項(xiàng)目名,顯示project editor
3 在TARGETS列表中選中要添加框架的工程
4 點(diǎn)擊project editor頂部的Build Phases
5 點(diǎn)擊Link Binary With Libraries前面的三角形打開這個分組
6 通過點(diǎn)擊添加(+)來添加一個框架
7 在列表中選擇一個框架撼玄,然后點(diǎn)擊Add按鈕
名稱 | 最先引入 | 前綴 | 描述 |
---|---|---|---|
Accelerate.framework | 4.0 | cblas,vDSP | 包含加速數(shù)學(xué)和DSP函數(shù)夺姑。 請查看 加速框架參考 。 |
AddressBook.framework | 2.0 | AB | 包含直接訪問用戶聯(lián)系人數(shù)據(jù)庫的函數(shù)互纯。請查看地址簿框架參考瑟幕。 |
AddressBookUI.framework | 2.0 | AB | 包含顯示系統(tǒng)定義的聯(lián)系人挑選界面和編輯界面的類。請查看iOS地址簿UI框架參考 留潦。 |
AssetsLibrary.framework | 4.0 | AL | 包含顯示用戶照片和視頻的類,請查看資源庫框架參考 辣往。 |
AudioToolbox.framework | 2.0 | AU,Audio | 包含處理音頻流數(shù)據(jù)以及播放或錄制音頻的接口兔院。請查看音頻工具箱框架參考。 |
AudioUnit.framework | 2.0 | AU,Audio | 包含加載并使用音頻單元的接口站削。請查看音頻單元框架參考. |
AVFoundation.framework | 2.2 | AV | 包含播放或錄制音頻的Objective-C接口坊萝。請查看AV Foundation框架參考.。 |
CFNetwork.framework | 2.0 | CF | 包含通過WiFi或者蜂窩無線訪問網(wǎng)絡(luò)的接口许起。請查看CFNetwork框架參考十偶。 |
CoreAudio.framework | 2.0 | Audio | 包含Core Audio框架使用的各種數(shù)據(jù)類型。請查看Core Audio 框架參考 园细。 |
CoreData.framework | 3.0 | NS | 包含管理應(yīng)用程序數(shù)據(jù)模型的接口惦积。請查看Core Data 框架參考 。 |
CoreFoundation.framework | 2.0 | CF | 提供一些基本軟件服務(wù)猛频,包括常見數(shù)據(jù)類型抽象狮崩、字符串實(shí)用工具、群體類型實(shí)用工具鹿寻、資源管理以及偏好設(shè)置睦柴。請查看rovCore Foundation框架參考。 |
CoreGraphics.framework | 2.0 | CG | 包含Quartz 2D接口毡熏。請查看Core Graphics 框架參考 坦敌。 |
CoreLocation.framework | 2.0 | CL | 包含確定用戶方位信息的接口。請查看Core Location 框架參考痢法。 |
CoreMedia.framework | 4.0 | CM | 包含操作音頻和視頻的底層例程狱窘。請查看Core Media 框架參考。 |
CoreMotion.framework | 4.0 | CM | 包含訪問加速度計(jì)以及陀螺儀的數(shù)據(jù)的接口疯暑。請查看Core Motion 框架參考训柴。 |
CoreTelephony.framework | 4.0 | CT | 包含訪問電話相關(guān)的信息的例程。請查看Core Telephony 框架參考妇拯。 |
CoreText.framework | 3.2 | CT | 包含一個文本的布局渲染引擎幻馁。請查看Core Text參考集.洗鸵。 |
CoreVideo.framework | 4.0 | CV | 包含操作音頻和視頻的底層例程。請不要直接使用該框架仗嗦。 |
EventKit.framework | 4.0 | EK | 包含訪問用戶日歷事件數(shù)據(jù)的接口膘滨。請查看Event Kit 框架參考。 |
EventKitUI.framework | 4.0 | EK | 包含顯示標(biāo)準(zhǔn)系統(tǒng)日歷界面的類稀拐。請查看Event Kit UI 框架參考火邓。 |
ExternalAccessory.framework | 3.0 | EA | 包含與外設(shè)進(jìn)行通訊的接口。請查看External Accessory 框架參考德撬。 |
Foundation.framework | 2.0 | NS | 包含Cocoa Foundation層的類和方法铲咨。請查看Foundation 框架參考。 |
GameKit.framework | 3.0 | GK | 包含點(diǎn)對點(diǎn)連接管理接口蜓洪。請查看Game Kit 框架參考纤勒。 |
iAd.framework | 4.0 | AD | 包含在應(yīng)用程序中顯示廣告的類。請查看iAd 框架參考隆檀。 |
ImageIO.framework | 4.0 | CG | 包含讀取或?qū)懭雸D像數(shù)據(jù)的類摇天。請查看Image I/O 參考集。 |
IOKit.framework | 2.0 | N/A | 包含設(shè)備所使用的接口恐仑。請不要直接使用此框架泉坐。 |
MapKit.framework | 3.0 | MK | 包含將地圖界面嵌入到應(yīng)用程序的類,也可以用于查找地理編碼反向坐標(biāo)裳仆。請查看Map Kit框架參考腕让。 |
MediaPlayer.framework | 2.0 | MP | 包含顯示全屏視頻的接口。請查看Media Player 框架參考鉴逞。 |
MessageUI.framework | 3.0 | MF | 包含撰寫和排隊(duì)發(fā)送電子郵件信息的界面记某。請查看Message UI 框架參考。 |
MobileCoreServices.framework | 3.0 | UT | 定義系統(tǒng)支持的統(tǒng)一類型標(biāo)識符(UTIs)构捡。 |
OpenAL.framework | 2.0 | AL | 包含OpenAL接口液南。OpenAL是一個跨平臺的方位音頻庫。如需進(jìn)一步了解勾徽,請?jiān)L問http://www.openal.org滑凉。 |
OpenGLES.framework | 2.0 | EAGL,GL | 包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平臺2D和3D渲染庫的跨平臺版本喘帚。請查看OpenGL ES 框架參考畅姊。 |
QuartzCore.framework | 2.0 | CA | 包含Core Animation接口。請查看Quartz Core 框架參考吹由。 |
QuickLook.framework | 4.0 | QL | 包含預(yù)覽文件接口若未。請查看Quick Look 框架參考。 |
Security.framework | 2.0 | CSSM,Sec | 包含管理證書倾鲫、公鑰私鑰以及信任策略的接口粗合。請查看Security框架參考萍嬉。 |
StoreKit.framework | 3.0 | SK | 包含用于處理與應(yīng)用程序內(nèi)購買相關(guān)的財(cái)務(wù)交易。請查看 Store Kit 框架參考隙疚。 |
SystemConfiguration.framework | 2.0 | SC | 包含用于處理設(shè)備網(wǎng)絡(luò)配置的接口壤追。請查看System Configuration框架參考。 |
UIKit.framework | 2.0 | UI | 包含iOS應(yīng)用程序用戶界面層使用的類和方法供屉。請查看UIKit 框架參考行冰。 |