框架是一個目錄,這個目錄包含了共享庫,訪問共享庫裡程式碼的標頭檔案,和其它的圖片和聲音的資原始檔。一個共享庫定義的方法或函式可以被應用程式呼叫。
IOS提供了很多你可以在應用程式裡呼叫的框架。要使用一個框架,需要將它新增到你的專案中,你的專案才可以使用它。許多應用程式都使用瞭如Foundation、UIKit、和Core Graphics這些框架。根據你為應用程式選擇的模版,相關的框架就已經被自動引入了。如果預設加入的框架不能滿足你的應用程式的需求,你也可以加入需要的框架。
看看HelloWorld.xcodeproj專案裡都包含了哪些框架(注:HelloWorld.xcodeproj是《Your First iOS App tutorial 》這篇教程裡的一個專案)
1.在XCode裡開啟HelloWorld.xcodeproj專案(如果還沒有開啟)
2\. 在project navigator視窗裡點選,點選Frameworks目錄前面的三角形圖示。你會看到:UIKit.framework,Foundation.framework, 和CoreGraphics.framework
3\. 點選任意一個framework前面的三角,然後再點選Headers前面的三角,可以看到框架裡的標頭檔案。
每個框架對應iOS系統裡的一層,每層建立在它下面層的上面。應該儘量使用上層的框架來代替下面的框架。更高層次的框架是對底層框架基於物件的抽象。
複製程式碼
iOS應用程式基於Foundation和UIKit框架
在你開發程式時,主要使用框架就是Foundation和UIKit,因為它們包含了你需要的大部分東西。
Foundation框架為所有的應用程式提供基本系統服務
你的應用程式,UIKit和其它的框架都是建立在Foundation框架上面的。Foundation框架是用Object-C對Core Foundation框架裡許多特性的封裝。
使用Foundation可以:
- 建立和管理集合,比如陣列和字典
- 訪問儲存在應用程式裡的圖片和其它資源
- 建立和管理字串
- 提交和接收通知
- 建立日期和時間物件
- 自動發現IP網路上的裝置
- 操作URL流
- 執行非同步程式碼
你已經在《Your First iOS App》裡使用到了Foundation框架。比如,你使用一個NSString類的例項儲存使用者輸入的userName。你還使用了Foundation框架的initWithFormat方法建立了一個字串。
UIKit框架提供建立基於觸控使用者介面的類
所有的iOS應用程式都基於UIKit,你不能是應用程式脫離這個框架。UIKit提供了在螢幕上繪製的機制,捕獲事件,和建立通用使用者介面元素。UIKit也通過管理顯示在螢幕上的元件來組織複雜的專案。
使用UIKit可以:
- 構建和管理你的使用者介面
- 捕獲觸控和基於移動的事件
- 呈現文字和web內容
- 優化你的多工程式
- 建立定製的使用者介面元素
在《YouFirst iOS App Tutorial》裡,你也使用到了UIKit。當你仔細檢視程式是怎麼執行起來的時候,你會看到UIApplicationMain函式建立一個UIApplication類的例項,這個例項會捕獲進來的使用者事件。你實現UITextFieldDelegate協議,然後在使用者按下Done時隱藏鍵盤。實際上,你是在使用UIKit建立使用者介面上的UITextField, UILabel,和UIButton類。
你需要知道的其它重要的框架
Core Data , Core Graphics, Core Animation,和OpenGLES框架都是高階的技術。所以這些框架對於你開發應用程式也是很重要的,它們都需要時間去學習和掌握。
Core Data框架管著理應用程式資料模型
Core Data提供物件的管理,使用Core Data,你可以建立模型物件,並管理這些物件。你管理這這些物件間的聯絡並修改資料。Core Data提供的內建SQLlite技術可以高效的管理資料。
使用Core Data可以:
- 在庫裡儲存和接收物件
- 提供基本的undo/redo
- 自動驗證屬性值
- 過濾、分組和優化記憶體中的資料
- 用[NSFetchedResultsController]管理表檢視中的結果
- 支援基於文件的應用程式
Core Graphics框架幫助你建立圖形
高質量的圖形對於所有的iOS應用程式都是很重要的。在iOS中最簡單且最快捷的建立圖形的方式是使用UIKit框架提供的基於預渲染圖形的檢視和控制元件,然後讓UIKit和iOS完成繪製。但是當你需要建立複雜的圖形時,Core Graphics則提供了更底層的庫來幫助你。
使用Core Graphics可以:
- 建立基於路徑的繪圖
- 抗鋸齒渲染
- 新增梯度、圖片和顏色
- Use coordinate-space transformations.
- 建立、顯示和分析PDF文件
Core Animation允許你建立高階的動畫和虛擬效果
UIKit提供建立在Core Animation之上的動畫。如果你需要比UIKit能力更高階的功能,可以直接使用Core Animation。Core Animation介面包含在Quartz Core框架裡。使用Core Animation可以建立巢狀的物件,並且可以對它們操作、旋轉、縮放和轉換。使用Core animation,你可以建立動態的使用者介面而不用使用更底層的圖形API,如OpenGL ES。
使用Core Animation可以:
- 建立定製動畫
- 新增定時函式和圖形
- 支援幀動畫
- Specify graphical layout constraints.
- Group multiple-layer changes into anatomic update.
OpenGL ES 框架提供2D和3D繪圖工具
OpenGL ES支援2D和3D繪圖,Apple的OpenGL ES實現通過硬體提供了高速的全屏遊戲式的應用程式。
使用OpenGL ES可以:
- 建立2D和3D圖形
- 建立更復雜的圖形,比如資料虛擬化、模擬飛行,或者視訊遊戲
- 訪問底層圖形裝置
根據需要向專案中新增其它框架
還有許多框架可以新增到你的程式裡。當你決定使用一個框架但專案裡卻沒有引入這個框架時,你就需要將它加入到你的專案裡。
將別的框架新增到工程裡
1 開啟工程
2 點選專案名,顯示project editor
3 在TARGETS列表中選中要新增框架的工程
4 點選project editor頂部的Build Phases
5 點選Link Binary With Libraries前面的三角形開啟這個分組
6 通過點選新增(+)來新增一個框架
7 在列表中選擇一個框架,然後點選Add按鈕
複製程式碼
名稱 | 最先引入 | 字首 | 描述 |
---|---|---|---|
Accelerate.framework | 4.0 | cblas,vDSP | 包含加速數學和DSP函式。 請檢視 加速框架參考 。 |
AddressBook.framework | 2.0 | AB | 包含直接訪問使用者聯絡人資料庫的函式。請檢視地址簿框架參考。 |
AddressBookUI.framework | 2.0 | AB | 包含顯示系統定義的聯絡人挑選介面和編輯介面的類。請檢視iOS地址簿UI框架參考 。 |
AssetsLibrary.framework | 4.0 | AL | 包含顯示使用者照片和視訊的類,請檢視資源庫框架參考 。 |
AudioToolbox.framework | 2.0 | AU,Audio | 包含處理音訊流資料以及播放或錄製音訊的介面。請檢視音訊工具箱框架參考。 |
AudioUnit.framework | 2.0 | AU,Audio | 包含載入並使用音訊單元的介面。請檢視音訊單元框架參考. |
AVFoundation.framework | 2.2 | AV | 包含播放或錄製音訊的Objective-C介面。請檢視AV Foundation框架參考.。 |
CFNetwork.framework | 2.0 | CF | 包含通過WiFi或者蜂窩無線訪問網路的介面。請檢視CFNetwork框架參考。 |
CoreAudio.framework | 2.0 | Audio | 包含Core Audio框架使用的各種資料型別。請檢視Core Audio 框架參考 。 |
CoreData.framework | 3.0 | NS | 包含管理應用程式資料模型的介面。請檢視Core Data 框架參考 。 |
CoreFoundation.framework | 2.0 | CF | 提供一些基本軟體服務,包括常見資料型別抽象、字串實用工具、群體型別實用工具、資源管理以及偏好設定。請檢視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 | 包含訪問加速度計以及陀螺儀的資料的介面。請檢視Core Motion 框架參考。 |
CoreTelephony.framework | 4.0 | CT | 包含訪問電話相關的資訊的例程。請檢視Core Telephony 框架參考。 |
CoreText.framework | 3.2 | CT | 包含一個文字的佈局渲染引擎。請檢視Core Text參考集.。 |
CoreVideo.framework | 4.0 | CV | 包含操作音訊和視訊的底層例程。請不要直接使用該框架。 |
EventKit.framework | 4.0 | EK | 包含訪問使用者日曆事件資料的介面。請檢視Event Kit 框架參考。 |
EventKitUI.framework | 4.0 | EK | 包含顯示標準系統日曆介面的類。請檢視Event Kit UI 框架參考。 |
ExternalAccessory.framework | 3.0 | EA | 包含與外設進行通訊的介面。請檢視External Accessory 框架參考。 |
Foundation.framework | 2.0 | NS | 包含Cocoa Foundation層的類和方法。請檢視Foundation 框架參考。 |
GameKit.framework | 3.0 | GK | 包含點對點連線管理介面。請檢視Game Kit 框架參考。 |
iAd.framework | 4.0 | AD | 包含在應用程式中顯示廣告的類。請檢視iAd 框架參考。 |
ImageIO.framework | 4.0 | CG | 包含讀取或寫入影象資料的類。請檢視Image I/O 參考集。 |
IOKit.framework | 2.0 | N/A | 包含裝置所使用的介面。請不要直接使用此框架。 |
MapKit.framework | 3.0 | MK | 包含將地圖介面嵌入到應用程式的類,也可以用於查詢地理編碼反向座標。請檢視Map Kit框架參考。 |
MediaPlayer.framework | 2.0 | MP | 包含顯示全屏視訊的介面。請檢視Media Player 框架參考。 |
MessageUI.framework | 3.0 | MF | 包含撰寫和排隊傳送電子郵件資訊的介面。請檢視Message UI 框架參考。 |
MobileCoreServices.framework | 3.0 | UT | 定義系統支援的統一型別識別符號(UTIs)。 |
OpenAL.framework | 2.0 | AL | 包含OpenAL介面。OpenAL是一個跨平臺的方位音訊庫。如需進一步瞭解,請訪問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 | 包含預覽檔案介面。請檢視Quick Look 框架參考。 |
Security.framework | 2.0 | CSSM,Sec | 包含管理證書、公鑰私鑰以及信任策略的介面。請檢視Security框架參考。 |
StoreKit.framework | 3.0 | SK | 包含用於處理與應用程式內購買相關的財務交易。請檢視 Store Kit 框架參考。 |
SystemConfiguration.framework | 2.0 | SC | 包含用於處理裝置網路配置的介面。請檢視System Configuration框架參考。 |
UIKit.framework | 2.0 | UI | 包含iOS應用程式使用者介面層使用的類和方法。請檢視UIKit 框架參考。 |