蘋果官方指南:Cocoa應用程序的特性
創建一個Cocoa應用程序,而又不必編寫哪怕一行代碼的情況是可能的。在Xcode中建立一個新的Cocoa工程,然后進行連編就可以了。當然,這個應用程序不做很多工作,至少不做很多有趣的工作。但是,這個極度簡單的應用程序在鼠標雙擊時仍然可以啟動,可以在Dock上顯示圖標,可以顯示其主菜單和窗口(標題為“Window”),可以根據命令將自身隱藏,可以和其它運行著的應用程序互動,還可以處理退出命令。您可以對這個窗口進行移動、調整尺寸、最小化、和關閉,甚至可以打印包含在窗口中的空白部分。
想像一下如果加入一點代碼,您可以做些什么。
在編程方面,Cocoa為開發者提供很多免費或代價很低的支持。當然,要成為一個高效率的Cocoa開發者意味著要熟悉新的概念、設計模式、編程接口、和開發工具,而這方面的努力并不是無足輕重的。但是熟能生巧,編程在很大程度上變成一種將Cocoa提供的編程組件和負責定義特殊邏輯的定制對象及代碼裝配在一起、再將這些裝配物組合在一起的練習。
接下來的部分是一個簡短的列表,說明Cocoa如何為您的應用程序增加價值,而只需要您加入少量的工作(有時候甚至不需要):
基本應用程序框架—Cocoa為事件驅動的行為和應用程序、窗口、工作空間(workspace)的管理提供了基礎設施。在大多數情況下,您不必直接處理事件或發送任何描畫命令給渲染庫。
用戶界面對象—Cocoa為應用程序的用戶界面提供了豐富而又現成的對象。這些對象的大部分都在Interface Builder(創建用戶界面的開發工具)的選盤上,您只要簡單地將對象從選盤拖拽到界面上,配置好屬性,并將它連接到其它對象上就可以了(當然,您也可以通過編程的方式對其進行實例化、配置、以及建立對象之間的連接)。下面是一些Cocoa用戶界面對象的實例:
windows |
text fields |
radio buttons |
drawers |
sheets |
tab views |
table views |
browsers |
pop-up lists |
sliders |
image views |
color wells |
combo boxes |
scroll views |
text views |
steppers |
此外,Cocoa還有一些支持用戶界面的技術,包括提高可訪問性、執行正當性檢查、以及連接用戶界面對象和定制對象需要的技術。
描畫和圖像處理—Cocoa帶有一個可以鎖定圖形焦點并將視圖(或視圖的一部分)標識為“變臟” 的框架,從而支持高效的定制視圖描畫。Cocoa中還有一些描畫貝齊爾(Bezier)路徑、執行遠交變換、合成圖像、以及創建不同圖像表示的編程工具類。
系統交互—Cocoa使您的應用程序可以和文件系統、工作空間、以及其它應用程序進行交互(或使用它們提供的服務)。
數據交換—Cocoa通過拷貝-粘貼、拖拽模型、以及Services菜單簡化了應用程序內部和應用程序之間的數據交換。
性能—為了增強應用程序的性能,Cocoa提供了多線程、空閑時間處理、資源的遲緩加載、內存管理、和運行環操作方面的編程支持。
基于文檔的應用程序—Cocoa為應用程序提供一種可以包含無限數量的文檔架構。每個文檔都包含在它自己的窗口中(比如一個字處理程序)。事實上,如果您選擇“Document-based application(基于文檔的應用程序)”工程類型,那么這類應用程序需要的很多組件就自動被創建了。
腳本處理—通過應用程序腳本能力信息和一組支持腳本的Cocoa類,您就可以使自己的應用程序具有腳本能力。也就是說,您的應用程序可以響應由AppleScript腳本發出的命令。應用程序也可以通過執行腳本或使用單獨的Apple Event來向其它應用程序發送命令,或者接受其它應用程序的命令。結果是每個具有腳本能力的應用程序都可以為用戶或其它應用程序提供服務。
國際化—Cocoa使用一種已經精化多年的方法來支持國際化和本地化。這種方法基于偏好語言的用戶列表,將本地化的資源放到應用程序的程序包(bundle)中。Cocoa還提供產生和訪問本地化字符串的工具和編程接口。而且,Cocoa中的文本操作缺省情況下是基于Unicode的,因此有利于程序的國際化。
Undo管理—您可以注冊一個用戶動作來和undo管理器協同工作,當用戶選擇合適的菜單項時,它們會處理undo(或redo)動作。Undo管理器通過獨立的棧來維護undo和redo操作。
文本—Cocoa提供了一個復雜的文本系統,使您可以進行從簡單到較為復雜的文本處理,簡單文本處理的一個例子是在文本視圖上顯示可編輯的文本,復雜的處理則比如字距和連字的控制、拼寫檢查、和嵌入圖像。
打印—和文本系統相類似,打印架構使您可以打印文檔和其它應用程序內容,并進行各種控制調整。在最簡單的級別上,您缺省可以打印各種視圖的內容;在較為復雜的級別上,您可以定義打印的內容和格式,控制一個打印作業如何進行,以及在打印面板上添加必要的視圖。
偏好設置—用戶缺省設置系統基于一個系統范圍內的數據庫,您可以將全局或應用程序特有的偏好設置存儲在這個數據庫中。
連網—Cocoa包含一個分布式對象(Distributed Objects)架構,它使一個Cocoa進程可以和相同或不同的計算機上的其它進程進行通訊。這個架構還提供將Bonjour能力集成到應用程序的編程接口。
多媒體—Cocoa提供了QuickTime視頻和基本音頻能力的支持。