iOS iPhone SDK 包含哪些東西?

joeblackzqq發表於2014-05-30

From: http://www.cnblogs.com/jy578154186/archive/2013/02/27/2934881.html


iPhone SDK 包含哪些東西?

第一部分:

在使用Intel晶片的Macintosh計算機開發iOS應用程式所需的全部介面、工具以及資源全都包含於iPhone SDK。

蘋果公司將大部分系統介面釋出在框架這種特殊的資料包。一個框架就是一個目錄,它包含一個動態共享庫以及使用這個庫所需的資源(例如標頭檔案、影像以及幫助應用程式等)。如果要使用某個框架,則需要將其連結到應用程式工程,這一點和使用其他共享庫相似。另外,您還需要告知開發工具何處可以找到框架標頭檔案以及其他資源。

除了使用框架,蘋果公司還通過標準共享庫的形式來發布某些技術。 由於iOS以UNIX為基礎,作業系統底層的許多技術都源自開源技術,這些技術的許多介面可以從標準庫和介面目錄訪問。

SDK中還包含下述重要元件:

Xcode工具 -提供iOS應用程式開發工具,包括如下關鍵應用程式:

Xcode -是一個整合開發環境,它負責管理應用程式工程。您可以通過它來編輯、編譯、執行以及除錯程式碼。Xcode還整合了許多其他工具,它是開發過程中使用到的主要應用程式。

Interface Builder -以視覺化方式組裝使用者介面的工具。通過Interface Builder建立出來的介面物件將會儲存到某種特定格式的資原始檔,並且在執行時載入到應用程式。

Instruments - 執行時效能分析和除錯工具。您可以通過 Instruments 收集應用程式執行時的行為資訊,並利用這些資訊來確認可能存在的問題。

iPhone模擬器 -是Mac OS X平臺應用程式,它對iOS技術棧進行模擬,以便於您可以在基於Intel的Macintosh計算機上測試iOS應用程式。

iOS參考庫- SDK預設包含iOS的參考文件。另外,如果文件庫有更新,則更新會被自動下載到本地。通過選擇Help > Developer Documentation就可以看到參考庫。

SDK提供編寫應用程式所需的軟體,而且Xcode和Instruments允許您直接與繫結裝置進行互動,在目標硬體執行並除錯程式碼。如果您需要在實際裝置上開發,請加入蘋果公司的收費iPhone開發者計劃,並將裝置配置成開發用途。如需進一步瞭解iPhone開發者計劃,請向ITCH-ios 培訓專業老師諮詢。

如果您需要了解如何安裝iPhone SDK以及如何使用iPhone SDK開發iOS應用程式,則請參考iOS開發指南。如果進一步瞭解iOS的框架,並且希望瞭解何處可以找到底層的系統庫,則請參考“iOS框架”。【ITCH-ios 培訓專業學院】

 

 

第二部分:

iPhone SDK 包含哪些東西?

蘋果公司將大部分系統介面釋出在框架這種特殊的資料包。一個框架就是一個目錄,它包含一個動態共享庫以及使用這個庫所需的資源(例如標頭檔案、影像以及幫助應用程式等)。如果要使用某個框架,則需要將其連結到應用程式工程,這一點和使用其他共享庫相似。另外,您還需要告知開發工具何處可以找到框架標頭檔案以及其他資源

除了使用框架,蘋果公司還通過標準共享庫的形式來發布某些技術。 由於iOS以UNIX為基礎,作業系統底層的許多技術都源自開源技術,這些技術的許多介面可以從標準庫和介面目錄訪問。

 

Cocoa Touch 層

Cocoa Touch層包含建立 iOS應用程式所需的關鍵框架。上至實現應用程式可視介面,下至與高階系統服務互動,都需要該層技術提供底層基礎。在開發應用程式的時候,請儘可能不要使用更底層的框架,儘可能使用該層的框架。

 

多工

儘管應用程式進入後臺就會被掛起,但可以通過下述的技術讓其在後臺繼續執行:

  • 應用程式可以請求一定的時間完成某些重要的任務。

  • 應用程式可以宣告自身支援的某種服務需要獲得定期後臺執行時間。

  • 應用程式可以使用本地通告在指定時間向使用者發通知。這種方式對於應用程式是否執行沒有要求。

不管應用程式是被掛起還是在後臺執行,支援多工不需要付出額外的工作。但是在某些情況(例如記憶體不足)下,應用程式可能會被結束執行。因此,應用程式應該可以在任何時候退出。這就意味著許多在退出應用程式時需要執行的任務必須改為在應用程式切換到後臺的時候執行。這就要求您在應用程式委託中實現一些新的方法以響應程式的狀態切換。

 

資料保護

和敏感使用者資料打交道的應用程式可以使用裝置內建加密功能(有些裝置可能不提供內建加密功能)對資料進行保護。如果應用程式指定某個檔案受保護,系統會以加密格式將該檔案儲存在磁碟。當裝置鎖住的時候,您的應用程式以及其他潛在的闖入者都不能訪問該檔案,而當使用者解鎖裝置後,系統會生成一份金鑰以便您的應用程式就訪問該檔案。

如需實現資料保護,應用程式應在待保護資料的建立和管理方式下一些功夫。它必須能夠在資料建立之時保證其安全,而且需要適配裝置上鎖或未上鎖造成的檔案可訪問性的變化。

 

蘋果推送通知服務

從設計角度看,讓應用程式支援推送通知包含兩個部分。首先,iOS應用程式需要請求系統向其傳送通知,然後要合理配置應用程式委託使其可以對通知進行恰當處理。這些工作可以通過應用程式委託以及UIApplication物件合作完成。第二,您需要提供一個伺服器端程式用於產生最初的通知。該程式執行在您自己的本地伺服器,它和蘋果推送通知服務協同工作以產生最初的通知。

 

本地通知

iOS 4.0引入了本地通知。本地通知是對已有推送通知的補充,通用程式可以通過它在本地生成通知,不再需要依賴外部伺服器。當有重要的事件發生時,後臺應用程式可以利用本地通知獲得使用者關注。舉個例子,執行於後臺的導航應用程式可以使用本地通知提醒使用者要轉彎。應用程式也可以安排在未來的某個時刻向使用者傳送本地通知,而且傳送這些通知並不要求應用程式處於執行狀態。

本地通知的優點是它獨立於您的應用程式。一旦某個通知被安排好後,系統會負責通知傳送。而且在傳送通知的時候,您的應用程式無需處於執行狀態

 

手勢識別器

iOS 3.2引入了手勢識別器。手勢識別器是一個繫結到檢視的物件,用於檢測常見的手勢型別。將手勢識別器繫結到檢視後,您可以告訴它某個手勢發生的時候執行何種動作。之後,手勢識別器就可以對原始事件進行跟蹤,根據系統定義的試探方式識別手勢。在引入手勢識別器前,如果要識別一個手勢,您需要跟蹤檢視的原始觸控事件流,然後再使用複雜的試探方法來判斷這些事件是否表示某種手勢。

現在,UIKit框架中包含一個UIGestureRecognizer 類,它定義了所有手勢識別器的基本行為。您可以使用自定義的手勢識別器子類或者系統定義的某個子類處理下面這些標準手勢:

  • 拍擊 (任意次數的拍擊)

  • 向裡或向外捏 (用於縮放)

  • 搖動或者拖拽

  • 擦碰 (以任意方向)

  • 旋轉 (手指朝相反方向移動)

  • 長按

如需進一步瞭解您可以使用的手勢識別器

 

檔案共享支援

應用程式可以使用檔案共享讓使用者訪問程式的使用者資料檔案。檔案共享允許應用程式通過iTunes向使用者顯露應用程式/Documents目錄的內容。這樣,使用者就可以在iPad和桌面計算機來回移動檔案。但是,該功能不允許應用程式和同一裝置上的其他應用程式共享檔案。如果希望在程式間共享檔案,請使用剪貼簿或者文件互動控制器物件。

您可以通過如下步驟來讓應用程式支援檔案共享:

  1. 在應用程式的Info.plist檔案中新增UIFileSharingEnabled鍵,並將鍵值設定為YES

  2. 將您希望共享的檔案放在應用程式的Documents目錄。

  3. 一旦裝置插入到使用者計算機,iTunes 9.1就會在選中裝置的Apps標籤中顯示一個File Sharing區域。

  4. 此後,使用者就可以向該目錄新增檔案或者將檔案移動到桌面計算機中。

如果應用程式支援檔案共享,當檔案新增到Documents目錄後,應用程式應該能夠識別並做出適當響應。例如說,應用程式可以將新檔案的內容顯示介面上。請不要向使用者展現目錄的檔案列表並詢問他們希望對檔案執行什麼操作。

 

點對點服務

在iOS 3.0 及後續版本,Game Kit框架支援經由藍芽進行點對點連線。您可以使用點對點連線啟動與某個鄰近裝置的通訊會話,也可用它實現多種多玩家遊戲的常見特性。雖然點對點連線主要應用於遊戲,但您也可將之應用於其他型別應用程式。

 

標準系統檢視控制器

Cocoa Touch層許多框架含有展現標準系統介面的檢視控制器。我們提倡您在應用程式中使用這些檢視控制器,這樣可以讓您的程式和系統具有一致的使用者體驗。如果您需要執行下述任務,請從相應的框架中選擇一個檢視控制器使用:

  • 顯示或者編輯聯絡人資訊 - 請使用Address Book UI框架中的檢視控制器。

  • 建立或者編輯日曆事件 - 請使用Event Kit UI框架的檢視控制器。

  • 建立email或者SMS訊息 - 請使用Message UI框架中的檢視控制器。

  • 開啟或者預覽一份檔案的內容 - 請使用UIKit框架中的UIDocumentInteractionController類。

  • 從使用者的照片庫選取一張照片 - 請使用UIKit框架中的 UIImagePickerController 類。

  • 拍攝視訊片段 - 請使用UIKit框架中的UIImagePickerController類。

如需瞭解如何選擇使用檢視控制器,請檢視iOS檢視控制器程式設計指南。如需瞭解特定檢視控制器所展現的介面,請檢視相應的框架參考。

 

外部裝置支援

安裝iOS 3.2的裝置可通過一組裝置支援的線纜連線一個外部顯示裝置。當外部裝置連上後,應用程式就可以使用其螢幕顯示內容。螢幕的資訊,包括螢幕能夠支援的解析度都可通過UIKit框架的介面獲取。您也可以通過該框架將應用程式視窗關聯到某個螢幕。

  • UIScreen 類用於獲取當前所有螢幕(包括裝置主螢幕)的螢幕物件。螢幕物件包含螢幕的屬性資訊(包括將螢幕的尺寸和畫素比例也考慮在內的螢幕特徵)。

  • 您可以從UIScreenMode 類獲得某個具有特定尺寸畫素比例的螢幕的資訊。

  • 您可以將視窗(使用UIWindow類來表示)指定到某個特定的螢幕。如果您需要對內容作映象顯示,則需要提供兩個獨立的視窗,然後再在其中顯示相同內容。

如需進一步瞭解上述類可提供的支援,請檢視UIKit框架參考中相應的類描述。

 

Cocoa Touch 層包含的框架

Address Book UI 框架

Event Kit UI 框架

Game Kit 框架

iAd 框架

Map Kit 框架

iOS 3.0匯入了 Map Kit框架 (MapKit.framework) ,該框架供一個可被嵌入到應用程式的地圖介面,該介面包含一個可以滾動的地圖檢視。您可以在檢視中新增定製資訊,並可將其嵌入到應用程式檢視,通過程式設計的方式設定地圖的各種屬性(包括當前地圖顯示的區域以及使用者的方位)。您也可以使用定製標註或標準標註(例如使用測針標記)突出顯示地圖中的某些區域或額外的資訊。

在iOS 4.0系統中,該框架開始支援可拖動標註以及定製覆蓋層。可拖動標註允許您通過程式設計方式或通過使用者互動方式重定位某個標註的位置。覆蓋層可用於建立多個點組成的複雜地圖示註。地圖表面諸如公交路線、選舉地圖、公園邊界或者氣象資訊(例如雷達資料)等可以使用覆蓋層進行顯示。

如需進一步瞭解Map Kit框架中的類,請檢視Map Kit 框架參考

Message UI 框架

UIKit 框架

媒體層

圖形技術

建立應用程式最簡單最有效的方法是使用事先渲染過的圖片,搭配上標準檢視以及UIKit框架的控制元件,然後把繪製任務交給系統來執行。但是在某些情況下,您可能需要一些UIKit所不具有的功能,而且需要定製某些行為。在這種情況下,您可以使用下述技術管理應用程式的圖形內容:

  • Core Graphics (也被稱為Quartz),用於處理本地2D向量渲染和圖片渲染。

  • Core Animation ( Quartz Core框架的一部分),為動畫檢視和其他內容提供更高階別支援。

  • OpenGL ES,為使用硬體加速介面的2D和3D渲染提供支援。

  • Core Text,提供一個精密的文字佈局和渲染引擎。

  • Image I/O,提供讀取及編寫大多數圖形格式的介面。

  • 資產庫框架(Assets Library framework),可用於訪問使用者照片庫中的照片和視訊。

大多數應用程式應該無需改動,或者只需做很少修改,便可執行在具備高解析度螢幕的裝置。因為在繪圖或者操作檢視的時候,您所指定的座標值會被對映到邏輯座標系統,它和底層螢幕解析度沒有關聯。而且繪製的內容會自動根據需要按比例縮放,以此來支援高解析度螢幕。對基於向量進行繪製的程式碼來說,系統框架會自動使用額外的畫素來改善圖畫的內容,使其變得更清晰。如果應用程式中使用了圖片,則可以利用UIKit自動載入現有圖片的高解析度版本。

音訊技術

請記住,要儘可能地選取高階框架,因為它們可以簡化播放音訊所需的工作。下面列出的框架從高階到低階排列,,媒體播放器框架(Media Player framwork)提供的是最高階的介面:

  • 媒體播放器框架。該框架可以讓訪問使用者的iTume庫變得很容易,並且支援播放曲目和播放列表。

  • AV Foundation框架。它提供一組簡單易用的Objective-C介面,可用於管理音訊的播放或錄製。.

  • OpenAL框架。它提供一組跨平臺,用於釋出方位音訊的介面。

  • Core Audio框架。它提供的介面簡單而精密,可用於播放或錄製音訊內容。您可以使用這些介面播放系統的警報聲音、觸發備的震動功能、管理多聲道的緩衝和播放、對音訊內容進行流化處理。

 

視訊技術

選擇視訊技術的時候,請儘可能選擇高階框架,因為高階框架可以簡化為提供對某種功能的支援所需的工作。下面列出的框架由高階到低階排列。其中,媒體播放器框架提供最高階的介面:

  • 媒體播放器框架,它提供一組易於使用的介面,可用於播放應用程式中全屏或部分屏的電影。

  • AV Foundation框架,它提供一組Objective-C介面,可以對電影的捕捉和播放進行管理。

  • Core Media框架,它對較高階框架使用的底層型別進行描述,同時也提供一些底層介面,它們用於對媒體進行處理。

 

Core Services 層

Core Services層為所有的應用程式提供基礎系統服務。可能應用程式並不直接使用這些服務,但它們是系統很多部分賴以建構的基礎。

下面的部分描述一些比較常見特性,也許您正打算讓您的應用程式支援這些特性。

塊物件

Grand Central Dispatch

應用程式內購買(In App Purchase)

定位服務

SQLite

XML 支援

 

Core Foundation 框架

Core Foundation框架 (CoreFoundation.framework) 是一組C語言介面,它們為iOS應用程式提供基本資料管理和服務功能。下面列舉該框架支援進行管理的資料以及可提供的服務:

  • 群體資料型別 (陣列、集合等)

  • 程式包

  • 字串管理

  • 日期和時間管理

  • 原始資料塊管理

  • 偏好管理

  • URL及資料流操作

  • 執行緒和RunLoop

  • 埠和soket通訊

Core Foundation框架和Foundation框架緊密相關,它們為相同功能提供介面,但Foundation框架提供Objective-C介面。如果您將Foundation物件和Core Foundation型別摻雜使用,則可利用兩個框架之間的 “toll-free bridging”。所謂的Toll-free bridging是說您可以在某個框架的方法或函式同時使用Core Foundatio和Foundation 框架中的某些型別。很多資料型別支援這一特性,其中包括群體和字串資料型別。每個框架的類和型別描述都會對某個物件是否為 toll-free bridged,應和什麼物件橋接進行說明。

 

Foundation 框架

Foundation框架 (Foundation.framework)為 Core Foundation框架的許多功能提供Objective-C封裝。您可以參考Core Foundation框架瞭解前面對Core Foundation框架的描述。 Foundation框架為下述功能提供支援:

  • 群體資料型別 (陣列、集合等)

  • 程式包

  • 字串管理

  • 日期和時間管理

  • 原始資料塊管理

  • 偏好管理

  • URL及資料流操作

  • 執行緒和RunLoop

  • Bonjour

  • 通訊埠管理

  • 國際化

  • 正規表示式匹配

  • 快取支援

 

Core OS 層

Accelerate 框架

External Accessory 框架

Security 框架

System

 

iOS 的框架

裝置中的框架

表B-1描述iOS裝置提供的框架,它們位於<Xcode>/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/System/Library/Frameworks目錄。路徑中的<Xcode>表示Xcode的安裝目錄, <iOS_SDK>則表示目標SDK版本。

模擬器的框架

裝置和模擬器的框架稍有區別。模擬器將幾個Mac OS X框架作為其自身實現的一部分。另外,由於系統的限制,裝置框架的確切介面有可能和模擬器框架稍有不同。

系統庫

請注意,iOS系統可能沒有將Core OS和Core Services層某些特殊的庫打包成框架,而是將其作為動態庫放在系統的/usr/lib 目錄。動態共享庫通過.dylib副檔名標識,其相應的標頭檔案位於/usr/include目錄。

所有版本的iPhone SDK都包含一份安裝在系統的動態共享庫本地副本。這些副本被安裝在您的開發系統,您可以從XCode工程進行連結。如果您需要檢視某個版本的動態庫列表,請檢視<Xcode>/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/usr/lib。在這個路徑中,<Xcode>表示Xcode的安裝目錄,<iOS_SDK>表示您當時正在使用某個版本的SDK。

iOS使用符號連結來指向程式庫的最近版本。在連結某個動態共享庫的時候,請使用符號連結而不要使用動態庫特定版本連結。因為在將來的iOS版本中,庫的版本可能會發生改變。如果您的軟體連線到某個特定的版本,而那個版本可能已經不存在於使用者的系統當中,那就會出問題。

相關文章