深入了解Cocoa Touch 層
詳解Cocoa Touch 層是本文要介紹的內容,先來看內容。Cocoa Touch層包含創建 iOS應用程序所需的關鍵框架。上至實現應用程序可視界面,下至與高級系統服務交互,都需要該層技術提供底層基礎。在開發應用程序的時候,請盡可能不要使用更底層的框架,盡可能使用該層的框架。
高級特性
下面章節描述一些常見特性,也許您也正打算在應用程序支持這些特性。
多任務
如果應用程序構建于iPhone SDK 4.0及其后續版本(且運行于iOS 4.0及后續版本操作系統),則點擊Home鍵的時候,應用程序不會結束,而是切換到后臺。對于大多數應用程序來說,進入后臺,它們就會進入掛起狀態。讓應用程序駐留在后臺可以避免以后的重新啟動過程,應用程序可以直接將自己激活,這在很大程度上改善了整體用戶體驗。另外,將應用程序掛起也可以改善系統性能,因為掛起應用程序可以最小化電能使用,并可讓前臺應用程序獲得更多的執行時間。
盡管應用程序進入后臺就會被掛起,但可以通過下述的技術讓其在后臺繼續運行:
應用程序可以請求一定的時間完成某些重要的任務。
應用程序可以聲明自身支持的某種服務需要獲得定期后臺執行時間。
應用程序可以使用本地通告在指定時間向用戶發通知。這種方式對于應用程序是否運行沒有要求。
不管應用程序是被掛起還是在后臺運行,支持多任務不需要付出額外的工作。但是在某些情況(例如內存不足)下,應用程序可能會被結束運行。因此,應用程序應該可以在任何時候退出。這就意味著許多在退出應用程序時需要執行的任務必須改為在應用程序切換到后臺的時候執行。這就要求您在應用程序委托中實現一些新的方法以響應程序的狀態切換。
如果需要進一步了解如何對后臺狀態切換進行處理以及如何讓應用程序在后臺繼續運行,請查看iOS應用程序編程指南。
數據保護
和敏感用戶數據打交道的應用程序可以使用設備內建加密功能(有些設備可能不提供內建加密功能)對數據進行保護。如果應用程序指定某個文件受保護,系統會以加密格式將該文件保存在磁盤。當設備鎖住的時候,您的應用程序以及其他潛在的闖入者都不能訪問該文件,而當用戶解鎖設備后,系統會生成一份密鑰以便您的應用程序就訪問該文件。
如需實現數據保護,應用程序應在待保護數據的創建和管理方式下一些功夫。它必須能夠在數據創建之時保證其安全,而且需要適配設備上鎖或未上鎖造成的文件可訪問性的變化。
如需進一步了解應用程序如何為文件添加數據保護,請查看iOS應用程序編程指南中的實現標準的應用程序行為一章。
蘋果推送通知服務
iOS 3.0及后續版本的系統中,不管應用程序是否運行,蘋果推送通知服務可用于通知用戶某個應用程序具有新信息。利用這項服務,您可以向系統推送文本通知,可以觸發聲音提醒或者在應用程序圖標上添加一個數字化標記。這樣用戶就知道他們應該打開應用程序接收相關信息。
從設計角度看,讓應用程序支持推送通知包含兩個部分。首先,iOS應用程序需要請求系統向其發送通知,然后要合理配置應用程序委托使其可以對通知進行恰當處理。這些工作可以通過應用程序委托以及UIApplication對象合作完成。第二,您需要提供一個服務器端進程用于產生最初的通知。該進程運行在您自己的本地服務器,它和蘋果推送通知服務協同工作以產生最初的通知。
如需進一步了解如何配置應用程序以便使用遠程通知,請查看本地通知及推送通知編程指南。
本地通知
iOS 4.0引入了本地通知。本地通知是對已有推送通知的補充,通用程序可以通過它在本地生成通知,不再需要依賴外部服務器。當有重要的事件發生時,后臺應用程序可以利用本地通知獲得用戶關注。舉個例子,運行于后臺的導航應用程序可以使用本地通知提醒用戶要轉彎。應用程序也可以安排在未來的某個時刻向用戶發送本地通知,而且發送這些通知并不要求應用程序處于運行狀態。
本地通知的優點是它獨立于您的應用程序。一旦某個通知被安排好后,系統會負責通知發送。而且在發送通知的時候,您的應用程序無需處于運行狀態
如需進一步了解本地通知的使用方式,請查看本地通知及推送通知編程指南。
手勢識別器
iOS 3.2引入了手勢識別器。手勢識別器是一個綁定到視圖的對象,用于檢測常見的手勢類型。將手勢識別器綁定到視圖后,您可以告訴它某個手勢發生的時候執行何種動作。之后,手勢識別器就可以對原始事件進行跟蹤,根據系統定義的試探方式識別手勢。在引入手勢識別器前,如果要識別一個手勢,您需要跟蹤視圖的原始觸摸事件流,然后再使用復雜的試探方法來判斷這些事件是否表示某種手勢。
現在,UIKit框架中包含一個
UIGestureRecognizer
類,它定義了所有手勢識別器的基本行為。您可以使用自定義的手勢識別器子類或者系統定義的某個子類處理下面這些標準手勢:
拍擊 (任意次數的拍擊)
向里或向外捏 (用于縮放)
搖動或者拖拽
擦碰 (以任意方向)
旋轉 (手指朝相反方向移動)
長按
如需進一步了解您可以使用的手勢識別器,請查看iOS事件處理指南。
文件共享支持
應用程序可以使用文件共享讓用戶訪問程序的用戶數據文件。文件共享允許應用程序通過iTunes向用戶顯露應用程序/Documents
目錄的內容。這樣,用戶就可以在iPad和桌面計算機來回移動文件。但是,該功能不允許應用程序和同一設備上的其他應用程序共享文件。如果希望在程序間共享文件,請使用剪貼板或者文檔交互控制器對象。
您可以通過如下步驟來讓應用程序支持文件共享:
在應用程序的Info.plist文件中添加UIFileSharingEnabled鍵,并將鍵值設置為YES。
將您希望共享的文件放在應用程序的Documents目錄。
一旦設備插入到用戶計算機,iTunes 9.1就會在選中設備的Apps標簽中顯示一個File Sharing區域。
此后,用戶就可以向該目錄添加文件或者將文件移動到桌面計算機中。
如果應用程序支持文件共享,當文件添加到Documents目錄后,應用程序應該能夠識別并做出適當響應。例如說,應用程序可以將新文件的內容顯示界面上。請不要向用戶展現目錄的文件列表并詢問他們希望對文件執行什么操作。
如需進一步了解UIFileSharingEnabled鍵,請查看信息屬性列表參考。
點對點服務
在iOS 3.0 及后續版本,Game Kit框架支持經由藍牙進行點對點連接。您可以使用點對點連接啟動與某個鄰近設備的通訊會話,也可用它實現多種多玩家游戲的常見特性。雖然點對點連接主要應用于游戲,但您也可將之應用于其他類型應用程序。
如需進一步了解如何在應用程序中使用點對點連接的特性,請查看Game Kit 編程指南。如果需要概要了解Game Kit框架,請查看“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 層包含的框架
下面部分描述Cocoa Touch層包含的框架以及這些框架提供的服務。
Address Book UI 框架
Address Book UI 框架(AddressBookUI.framework)是一套Objective-C的編程接口,可以顯示創建或者編輯聯系人的標準系統界面。該框架簡化了應用程序顯示聯系人信息所需的工作,另外它也可以確保應用程序使用的界面和其他應用程序相同,進而保證跨平臺一致性。
如果需要進一步了解Address Book UI框架以及如何使用該框架,請查看iOS地址簿編程指南以及iOS地址簿框架參考。
Event Kit UI 框架
iOS 4.0引入了Event Kit UI框架(EventKitUI.framework),它提供一個視圖控制鍵可以展現查看并編輯事件的標準系統界面。Event Kit框架(查看“Event Kit框架”可獲得該框架的進一步信息)的事件數據是該框架的構建基礎。
如需進一步了解Event Kit UI框架類和方法,請查看Event Kit UI框架參考。
Game Kit 框架
iOS 3.0引入了Game Kit框架(GameKit.framework)。該框架支持點對點連接及游戲內語音功能,您可以通過該框架為應用程序增加點對點網絡功能。點對點連接以及游戲內語音功能在多玩家的游戲中非常普遍,不過您也可以考慮將其加入到非游戲應用程序。此框架通過一組建構于Bonjour之上的簡單而強大的類提供網絡功能,這些類將許多網絡細節抽象出來,從而讓沒有網絡編程經驗的開發者可以更加容易地將網絡功能整合到應用程序。
如需進一步了解Game Kit框架, 請查看Game Kit 編程指南以及Game Kit 框架參考 。
iAd 框架
iOS 4.0引入了iAd框架 (iAd.framework)。您可以通過該框架在應用程序中發布橫幅廣告。廣告會被放入到標準視圖,您可以將這些視圖加入到用戶界面,并在合適的時機向用戶展現。這些視圖和蘋果的公告服務相互協作,自動處理廣告內容的加載和展現,同時也可以響應用戶對廣告的點擊。
如需進一步了解如何在應用程序當中使用iAd,請查看iAd 框架參考。
Map Kit 框架
iOS 3.0導入了 Map Kit框架 (MapKit.framework) ,該框架供一個可被嵌入到應用程序的地圖界面,該界面包含一個可以滾動的地圖視圖。您可以在視圖中添加定制信息,并可將其嵌入到應用程序視圖,通過編程的方式設置地圖的各種屬性(包括當前地圖顯示的區域以及用戶的方位)。您也可以使用定制標注或標準標注(例如使用測針標記)突出顯示地圖中的某些區域或額外的信息。
在iOS 4.0系統中,該框架開始支持可拖動標注以及定制覆蓋層。可拖動標注允許您通過編程方式或通過用戶交互方式重定位某個標注的位置。覆蓋層可用于創建多個點組成的復雜地圖標注。地圖表面諸如公交路線、選舉地圖、公園邊界或者氣象信息(例如雷達數據)等可以使用覆蓋層進行顯示。
如需進一步了解Map Kit框架中的類,請查看Map Kit 框架參考。
Message UI 框架
iOS 3.0引入了Message UI框架 (MessageUI.framework)。您可以利用該框架撰寫電子郵件,并將其放入到用戶的發件箱排隊等候發送。該框架提供一個視圖控制器界面,您可以在應用程序中展現該界面,讓用戶通過該界面撰寫郵件。界面的字段可以根據待發送信息的內容生成。例如您可以設置接收人、主題、郵件內容并可以在郵件中包含附件。這個界面允許用戶先對郵件進行編輯,然后再選擇接受。在用戶接受郵件內容后,相應的郵件就會放入用戶的發件箱排隊等候發送。
在iOS 4.0及其后續的系統中,該框架提供一個SMS撰寫面板控制器。您可以通過它在應用程序中直接創建并編輯SMS信息(無需離開應用程序)。和電子郵件撰寫界面一樣,該界面也允許用戶先編輯SMS信息再發送。
如需進一步了解Message UI框架中的類,請參考Message UI 框架參考。
UIKit 框架
UIKit框架 (UIKit.framework)的Objective-C編程接口為實現iOS應用程序的圖形及事件驅動提供關鍵基礎。iOS系統所有程序都需要通過該框架實現下述核心功能:
應用程序管理
用戶界面管理
圖形和窗口支持
多任務支持
處理觸摸及移動事件。
代表標準系統視圖和控件的對象
文本和web內容相關操作
剪切、復制以及粘貼
使用動畫顯示用戶界面內容
通過URL方式將其他應用程序整合到系統
蘋果推送通知服務支持,請查看“蘋果推送通知服務 ”
為殘疾用戶提供輔助功能
本地通知的調度和發送
創建PDF
使用定制輸入視圖(其行為類似系統鍵盤)
創建和系統鍵盤進行交互的定制文本視圖
除了鏈編至應用程序的基礎代碼,UIKit還為下述和設備緊密相連的功能提供支持:
加速器數據
內置相機(存在相機的設備)
用戶的圖片庫
設備名稱和模型信息
電池狀態信息
距離感應器信息
來自綁定聽筒的遠程控制信息
如需進一步了解UIKit框架的信息,請查看UIKit 框架參考
小結:關于詳解Cocoa Touch 層的內容介紹完了,希望本文對你有所幫助,更多內容請參考編輯推薦!