Recently in Cocoa Category

可變性 VS. 不變性

| No Comments | No TrackBacks
為什麼Cocoa會為字符串類和集合類(arrays, sets, dictionaries)同時提供可變和不可變的版本?
答案是為樂權衡兩種類型的對象. 不可變的對象一旦創建就不可變. 這意味著可以使用性能更佳的實現.
另一方面, 為樂能修改對象, 系統要付出額外開銷, 這使可變對象難以進行性能優化.
除此之外, 不可變對象天生具有線程安全的特性, 可以傳遞給其他程序員的代碼使用而不必擔心其內容被修改.
當您代碼創建時, 如果不需要改變對象的內容, 最好使用不可變對象.

(以上內容出自 <<Cocoa入門--使用Objective-C>>  P89 )

核心應用程序框架

| No Comments | No TrackBacks
core program framework.png
NSResponder 響應對象
NSResponder是一個抽象類, 它使其所有的派生類具有事件處理(event handling)能力. 它定義了一套消息在不同的鼠標和鍵盤事件發生時調用. 它同樣定義了應用程序對象之間的事件處理機制. NSResponder類定義了應用程序中所有事件處理對象, 處理消息的默認行為. 相應對象模型基於一下三個概念:
事件消息
直接輸入與事件相配合的消息, 比如鼠標點擊或鍵盤按鍵等.
動作消息
這種消息描述更高級別的命令, 如cut: 或者paste: 等
響應對象鏈
響應對象鏈是指被事件或動作消息應用的一系列響應對象. 如果消息沒有被給定的響應對象處理, 就會傳給鏈中的下一個對象.
相應對象鏈允許相應對象把的自己職責委托給系統中的其他對象. 相應對象鏈中的對象順序由應用程序的視圖, 窗口和NSApp對象之間的相互關系絕定. 視圖的下一個相應對象往往是它的父視圖, 內容視圖的下一個相應對象則是窗口本身. 在窗口之後, 事件最終傳遞給NSApp對象.

動作消息的相應對象鏈要更長一些, 即消息一直沿著相應對象鏈一直傳到窗口, 如果該對象序列出於鍵窗口中, 消息還會在主窗口中沿同樣路徑傳遞, 直到最後傳給NSApp對象.

第一相應對象
第一響應對象是窗口中第一個對鍵盤事件做出響應的視圖對象, 應用程序的每個窗口都會跟蹤其視圖層次結構中的第一個響應對象的狀態. 例如在TextEdit的應用程序中, 新文檔的窗口就是第一響應對象, 因為它第一個接受來自鍵盤的事件. 窗口默認的第一響應對象就是它自己, 但鼠標在窗口中點擊的任何視圖都能使其成為第一相應對象. 如果該視圖不能處理事件, 就傳給相應對象鏈中的下一個對象.

在多窗口的桌面環境下, 用戶可以用鼠標點擊的方式激活窗口. 此時該窗口成為鍵窗口, 它的第一相應對象就成為任何用戶事件的目標. 如果又選中了別的窗口, 那麼當前窗口就成為鍵窗口, 它的第一響應對象也就成為當前的第一相應對象. 如果沒有選中對象或者窗口中沒有控件, 那麼窗口自身就是第一響應對象.

您可以用Interface Builder或通過編程的方式設置initialFirstResponder(初始響應對象), 讓最先能合乎邏輯地使用鍵盤的控件在窗口出現時獲得焦點, 成為第一相應對象.

視圖和控件可以拒絕使自己處於第一響應對象狀態, 例如顯示靜態圖像的視圖也許不接受成為第一相應對象的狀態, 相應對象可以通過實現acceptFirstResponder方法並返回NO來表示它不像處於第一響應對象的狀態.

事件路由
事件基於其類型進行路由. NSApp對象把大部分的事件消息發給發生用戶動作的窗口. 其中, 鼠標事件會轉發給該窗口的視圖層次結構中被鼠標點擊的視圖; 鍵盤事件會轉發給第一響應對象. 如果視圖對象可以響應該事件或者說它接受成為第一響應事件的狀態, 並且定義了與事件消息對應的NSResponder方法, 那麼它就負責處理事件, 否則, 這個事件就會轉發給對象響應鏈中的下一個相應對象.
NSWindow類自行處理了一些事件而不傳遞給視圖, 比如窗口移動(window-moved), 窗口尺寸變更(window-resized)和窗口暴露(window-exposed)事件. NSApp也會自行處理一些事件, 比如應用程序激活(application-active)和應用程序休眠(application-deactivate)事件.

NSWindow 窗口
每個NSWindow對象都管理屏幕上一個對應的實際窗口. 它繪制窗口的框架並響應用戶針對窗口的動作, 如關閉, 移動, 改變尺寸以及對窗口的其他操作.NSWindow的主要功能是在它的內容區域(content area)
......
(累了....看demo去了...下次繼續)







Cocoa GUI 圖形用戶界面

| No Comments | No TrackBacks
Cocoa GUI基於以下四個概念:
  • 窗口(Windows)
  • Nib文件
  • 插座變量(Outlets)
  • 動作(Actions)
下面簡要介紹下後三種:
Nib文件
nib文件是對象實例的存檔, 它由Interface Builder生成. 和其他界面生成系同的是, nib文件不是生成的一段代碼. 它是一組真實的對象, 經過特殊編碼保存在磁盤中. nib文件中的對象由
Interface Builder中的圖形工具創建和操作.

nib文件通常將一組相關的界面對象及其資源一起打包, 也伴隨著對象之間如何關聯, 對象與您應用程序的其他對象如何關聯的信息. nib文件以特殊的存檔方式, 或者叫freeze-drying(速凍干燥)方式來描述它保存的所有對象, 以便應用程序在運行時能再生成並使用他們.

每個圖形界面的應用程序至少有一個nib文件, 它在應用程序啟動時被自動加載. 主nib文件通常包含了應用程序菜單, 而輔助的nib文件包含應用程序窗口及其關聯的界面對象. For example: Photoshop可能有一些輔助nib文件, 用來描述各種調板和控件以便您處理圖像.

插座變量 Outlets
插座變量是類的頭文件中以IBOutlet關鍵字標記的特殊實例變量, 它包含了對另一個對象的引用. 對象經由插座變量向應用程序的其它對象發送消息來與之通信.

插座變量能引用程序中的任何對象: 界面對象, 自定義類的實例, 甚至是應用程序對象自己. 插座實例變量於眾不同的是, Interface Builder只能識別IBOutlet關鍵字, 使您能操作插座變量定義的連接. 一旦定義了連接, 對象就在程序運行時就被聯系起來. 使用Interface Builder定制對象之間的連接把您從手工編寫初始化代碼中解脫出來. 除了插座變量之外, 還有許多方法能在應用程序中引用對象, 但插座變量與Interface Builder極大的便利了引用的初始化工作.

動作 Actions
動作是類定義中以IBAction關鍵字標記的特殊方法, 它由界面對象觸發.跟插座變量類似, Interface Builder也能識別頭文件中的動作聲明. 類似地,
Interface Builder允許您將用戶界面產生的一個動作(比如一個按鈕)與對象的方法相連接

話外:
用MVC模式設計應用程序
Cocoa應用程序中利用了一個經久不衰的面向對象范例 -----
模型 -- 視圖 -- 控制器 (Model - View - Controller, MVC)模式.
模型
持有數據並定義數據的邏輯操作
視圖
為用戶可視化的呈現對象, 如窗口和按鈕
控制器
在模式和視圖之間起到中間人角色的對象
MVC范例適用於很多應用程序, 因為控制器在中間的協調角色使模型對象無需知道界面的狀態和事件. 視圖對象同樣也不必知道模型對象的編程接口. 這樣將問題分割開來, 有助於在應用程序中封裝各種對象. 這也有助於代碼復用, 因為模型可用在其它地方, 甚至是另一平台.
 

內存管理在程序設計中是一個重要話題. 初學者遇到的多數問題都是由糟糕的內存管理導致的. 當一個對象在不同的應用程序中創建並傳遞給不通的"消費者"對象時, 該由哪個"消費者"來負責它的善後處理, 何時進行? 當一個對象不再使用卻沒被回收時, 就會造成內存洩漏. 當對象回收的太早, 別的對象若仍然假設它還存在時就會出現問題, 應用程序也可能崩潰.

Foundation框架定義了一套機制和策略, 以保證對象只在不需要的時候才被回收. 策略很簡單: 您有責任處理自己所擁有對象的善後工作. 您擁有由您創建的對象, 無論是通過內存分配還是拷貝得來的; 您還擁有(或共同擁有)您所保持(retain)的對象. 這個策略反過來說就是: 決不要釋放不歸您所有或保持的對象. 這樣做將過早地釋放內存, 導致很難追蹤得到的漏洞, 即便是那些很容易修補的漏洞

對象的初始化和回收
對象通常用alloc方法創建, 用init方法(或init方法變種)初始化. 當調用任何數組的init方法時, 該方法就會初始化數組的實例變量為默認值, 並完成一些其他的初始化工作. For example:
NSArray  *array = [[NSArray alloc]  init];
當用完創建的對象時, 您給對象發一條release(釋放)消息. 如果沒有其它對象使用或關注這個對象, 它就會被回收並移除內存.
回收對象調用dealloc方法, 讓該對象有機會釋放它所創建的對象, 解放被它分配的內存等.

引用計數 Reference Count
為了讓多個對象都可以注冊表示關注某個對象, 並在該對象不再被任何對象關注的時候從內存清除, Cocoa中的每個對象都有與之關聯的引用計數(Reference Count). 當您分配或復制對象時, 引用計數自動設為1. 這表示對象在一個地方使用. 當您這個對象傳遞給其它對象, 卻還想確保它能被自己使用時, 可以使用retain方法來將引用計數加1.
learnobjectivec-referencecounting.png(以上圖片來自http://cocoadevcentral.com/)

自動釋放池 Autorelease Pools
根據對象善後處理的上述策略, 如果對象的擁有者必須在它的程序范圍內釋放對象, 那麼怎麼將對象傳遞給其他對象? 或者說, 您怎麼能釋放一個將要返回給方法調用者的對象? 因為一旦從方法返回, 就再沒辦法釋放對象了.
答案是NSObject類內置的autorelease方法, 它與NSAutoreleasePool類共同配合. autorelease方法用NSAutoreleasePool來標記其接收者要稍後釋放. 這使對象的生命范圍超出了其擁有者對象的范圍, 以便其它對象使用. 這種機制解釋了您能看到很多實例中包含這樣的代碼:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// ... code ...
[pool drain];

每個應用程序都至少有一個(用於應用程序中每個控件線程的)自動釋放池(autoreleasepool), 也可以有多個. 通過發送autorelease消息可將對象放入池中. 在應用程序的事件循環中, 當代碼執行完畢並將控制權交還給應用程序對象時, 應用程序對象會發送一個release消息給自動釋放池, 而自動釋放池再給它包含的每個對象發release消息. 任何引用計數為0的對象就會自動的自我回收.
當對象只在創建它的方法范圍內使用時, 可以發送release消息立刻回收它. 否則就發送autorelease消息給所有創建了又移交走的對象, 以便選擇是否保持它.
除非您出於某種原因先保持了由其他對象傳來的對象, 否則不要釋放它. 這樣做會導致對象的引用計數過早地達到0, 後果可想而知: 內存洩漏!
您可以假設接收的對象在接收的方法以及處理它的事件循環(event loop)中都保持有效. 如果希望它留作實例變量, 就應該給它發retain消息, 然後在使用完自動釋放它.

在訪問方法中保持對象
內存管理中需要了解的一個重要地方在您類似的訪問方法中.乍一看似乎很明顯您需要釋放舊的對象引用而保持新的. 然而, 由於代碼很可能以參數形式多次調用同一個對象的訪問方法設置屬性, 所以對象引用的釋放和保持順序就變得非常重要.
一條規則是: 您當在釋放舊對象前保持新對象. 這確保了每件事如預期所料, 哪怕新舊對象相同. 如果您顛倒步驟, 如果新舊對象相同, 則有可能對象在保持前就從內存中被永久的移除了.
下面代碼體現了先保持, 再釋放的原則:
- (void) setProperty: (id)newProperty {
[newProperty retain];
[property release];
property = newProperty;
}
還有其它的方法也能保證訪問方法設置屬性時的關聯性, 他們中的多數在特定環境下是有效和適當的. 無論如何, 上述方法是我們能給出保證永遠有效的最簡單常用的模式

經驗之談
Cocoa中要記住的幾件內存管理相關的重要事情歸納為下面幾條:
  1. 通過分配或復制創建的對象保持計數為1
  2. 假設任何別的方法獲取的對象保持計數為1. 而且在自動釋放池中. 要想在當前執行范圍外使用該對象, 就必須保持它
  3. 向集合添加對象時它就被保持, 從集合移走對象時就被釋放. 釋放集合對象(如NSArray)會釋放該集合當中所有的對象
  4. 確保有多少個alloc, copy, mutableCopy或retain消息就有多少release或autorelease消息發送給該對象. 換句話說, 確保您代碼的平衡
  5. 在訪問方法設置屬性時先保持, 再釋放
  6. 在程序中用@"..."結構創建的NSString對象是有效常量. 向它們發送retain或者release消息沒有用
  7. 使用便利構造方法創建的對象(如NSString的stringWithFormat)可以被認為會自動釋放
  8. 在使用你自己的參數實例時, 需要實現-dealloc方法來釋放
未盡事宜, 有待補充...

gdb調試器命令及秘籍

| No Comments | No TrackBacks
調試器能做很多事情, 這裡有一些常用的調試器命令:

call [exp]
調用給定的對象功能, 如:
(gdb) call (void) [array removeObject: @"just a test"]

print [exp]
輸出給定表達式的原始值, 如:
(gdb) print (int) [artist length]

print-object [exp]
輸出表達式返回的對象的值, 該命令可以用po簡化,如
(gdb) print-object [artist description]
         等價於:
(gdb) po artist

set [variable] = [exp]
將表達式的值賦給變量, 如:
(gdb) set artist = @"new artist"

whatis [variable]
輸出變量的類型, 如:
(gdb) whatis artist

help
輸出調試器的命令列表, 演示:
(gdb) help
List of classes of commands:

aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
data -- Examining data
files -- Specifying and examining files
internals -- Maintenance commands
obscure -- Obscure features
running -- Running the program
stack -- Examining the stack
status -- Status inquiries
support -- Support facilities
tracepoints -- Tracing of program execution without stopping the program
user-defined -- User-defined commands

Type "help" followed by a class name for a list of commands in that class.
Type "help" followed by command name for full documentation.
Command name abbreviations are allowed if unambiguous.
其他工具
以下是除過Xcode和Interface Builder之外的, 具有GUI的開發工具, 除非特別說明, 它們均安裝在/Developer/Application/Utilities文件夾內.

Instruments

自Xcode3.0開始提供的非常獨特的調試工具. 它的界面有點像蘋果的音樂制作軟件GarageBand一樣的風格和時間線.Instruments讓您的性能調試工作從未變得如此直觀.

Dashcode
用來制作任何屬於您自己的Dashboard widget, 簡單而且有用. 您可以只用幾分鍾就做出widget並使用它, 甚至都不懂如何寫代碼.

FileMerge
可視化的比較兩個文件或目錄的內容. 您可以用FileMerge來判定同一源碼文件的不同版本或不同工程目錄之間的區別, 也用它來合並修改.

IconCompose
從源素材開始創建Mac OS X 圖標

IORegistryExplose
分層次顯示系統I/O注冊列表

MallocDebug
用於測量應用程序的動態內存使用情況, 找出內存洩露, 分析應用程序分配的內存, 測量自給定時間起分配的內存, 該工具在Performance Tools文件夾下

PackageManager
創建Mac OS X安裝包

Pixie
放大光標下的屏幕區域, 可以讓您精確的看到組成任何屏幕對象的像素. 放大倍率可在正常顯示的1~12倍之間調整. 該工具在Graphics Tools文件夾下

Property List Editor
打開, 顯示, 修改屬性列表(.plist)文件的內容

Quartz Debug
顯示系統管理的所有窗口的列表. 這個工具允許您打開Quartz調試模式, 在該模式下, 窗口服務器在更新屏幕區域時會在其上閃爍黃色. 該工具在Performance Tools文件夾下

Thread Viewer
允許您瀏覽應用程序高級別的線程行為. 該工具在Performance Tools文件夾下

命令行工具
還有一些命令行工具作為工具包的一部分被安裝, 它們負責編譯, 調試, 分析性能等工作. 其中許多工具是標准Unix應用程序的一部分. 可在/usr/bin文件夾下找到一下工具:

cc, gcc
GNU C編譯器(gcc), 用於編譯C, Objective-C, C++和Objective-C++的源代碼文件

gdb
一個源代碼級的C語言符號調試器, 已被擴展支持Objective-C, C++和Objective-C++

as
匯編; 將匯編代碼翻譯為目標代碼

defaults
讀寫, 搜索, 刪除用戶默認設置. 默認系統記錄了應用程序不運行時仍需保留的用戶偏好設置

nibtool
讀取Interface Builder的nib文件的內容. nibtool輸入類, 對象層次, 對象, 連接和可被本地化的字符串

libtool
由指定的對象二進制文件創建靜態或動態庫

otool
顯示對象文件或庫的指定內容

nm
顯示指定對象文件的全部或部分符號表

xcodebuild
通過命令行構建Xcode工程

strip
用於移除或修改附在匯編和連接生成結果上的符號表

cvs
CVS允許多人團隊在一個公用代碼的基礎上協同工作

sample
搜集進程的運行行為並生成報告顯示應用程序運行過程中執行了什麼函數

leaks
檢查進程中由malloc分配卻未被應用程序引用的緩沖區

Cocoa 二三事

| No Comments | No TrackBacks
Cocoa定義
Cocoa是一個先進的面向對象框架,主要用於構建運行在蘋果Mac OS X上的應用程序. 它把共享對象庫, 運行環境系統及開發環境完整地整合在了一起. Cocoa提供的基礎體系滿足大部分圖形界面應用程序的典型需要, 並將應用程序於操作系統內部的工作相互隔離.
可以把Cocoa理解為一個對象層, 它充當程序於操作系統之間的媒介於協調人的角色. 這些對象覆蓋了從基本類型的簡單封裝, 如字符串和數組, 到復雜的功能, 如分布式計算和高級影像處理. 它們被設計於一個復雜而精巧的體系之上, 以簡化編程工作, 輕松創建圖形界面的應用程序.
基於Cocoa的應用程序並不僅限於使用Cocoa框架中的特性. 它們也能使用Mac OS X中其它框架的全部功能, 例如Quartz, QuickTime, OpenGL, ColorSync等等. 由於Mac OS X是建立在一個給予BSD的堅固系統Darwin之上, Cocoa應用程序可以使用Unix系統的所有核心功能, 並按程序需要使用底層的文件系統, 網絡服務和設備.

Cocoa 歷史
Cocoa其實已存在很長時間, 幾乎於Macintosh一樣久遠. 它很大程度上基於OpenStep, 於1987年與雅典的NeXT cube電腦一起以NeXTSTEP的名字公布於世. 當時的NeXTSTEP的目標正如只有Steve Jobs才敢宣稱的"創造下一個瘋狂而偉大的事務". 它的發展經歷很多版本, 被眾多公司采納作為開發和部署環境, 並被廣泛報道, 十分火熱. 它基於領先當時世界上任何產品多年的設計, 成為一種強悍的技術延續至今.
NeXTSTEP建立由加州大學伯克利分校(UC Berkeley)開發的BSD Unix和卡內基梅隴大學(Carnegie-Mellon University)開發的Mach微內核基礎之上. 它利用了Apple公司開發的Display PostScript技術(允許使用PostScript頁面描述語言相同的代碼)來實現在屏幕上顯示文檔和輸出打印文檔. NeXTSTEP包含一組被成為框架(Framework)的庫, 還有一些工具, 使開發人員能夠利用Objective-C語言構建應用程序.
1993年,
NeXT公司退出硬件領域而專注於軟件業務. NeXTSTEP被移植到X86體系上並發布. 同時還移植到了SPARC, Alpha和PA-RISC等體系架構之上. 後來, 這些框架為了運行在如Windows和Solaris等其他操作系統上而進行了修改. 這些修改後的框架就是眾所周知的OpenStep.
到了1996年, 蘋果公司正在開發下一代操作系統, 代號Colpand, 用來接替非常成功的Mac OS 7, 但開發進展並不順利. 工程師們四處碰壁, 最終他們決定從外界尋找方案來搭建新操作系統的底層基礎. 盡管領先的競爭者是BeOS, 但出乎意料的是蘋果選擇了NeXT系統, 宣稱其在軟件開發和用與企業及互聯網市場的應用環境中有特殊的優勢. 作為合並的一部分, 蘋果著手開發Rhapsody(狂想曲), 它是
NeXTSTEP於經典Mac OS系統的融合. 經過五年多的發展, Rhapsody最終以Mac OS X 10.0發布. OpenStep隨著發展演變成了Cocoa.
Mac OS X保持了相當完整的Unix系統, Mac OS X的Unix一面只是對用戶隱藏起來, 除非用戶真想使用它. 然而它強大的能力卻能為程序員所用. 你不僅能利用它的能力, 實際上你還可以深入它的內部, 了解它是如何工作的. Mac OS X的底層代碼可在http://www.opensource.apple.com/darwinsource/找到

Cocoa框架
Cocoa由兩個面向對象的框架組成:Foundation(請勿與Core Foundation框架混淆)和Application Kit. 他們在系統中的位置如下:
                   Cocoa AppKit
                             |
               Cocoa Foundation
                             |
                Core Foundation
                             |
                        Kernel
Cocoa Foundation  框架中的類提供的對象和函數, 構成了Cocoa的基礎或者說是基石, 而這些函數和對象並不影響界面. 構建在Foundation框架上的AppKit框架, 提供了用戶在界面上可以看到的對象和行為, 如窗口和按鈕; 這些類同時也處理鼠標和鍵盤事件. 可以這樣認為它們的區別: Cocoa Foundation框架提供了應用程序表層之下的操作功能, 而AppKit框架的類提供了用戶可見的關於界面的功能.
網站:
蘋果開發人員聯盟(Apple Developer Connection)
蘋果定期的通過蘋果開發人員聯盟(ADC)網站來發布新文檔, 更新現有文檔. 與此同時, 成為ADC會員(online會員是免費的)讓您能訪問到最新的開發工具:

http://developer.apple.com.cn/

O'Reilly的Mac DevCenter
歸屬於O'Reilly & Associates, Inc., O'Reilly Network是Mac DevCenter的家.它是一個為Mac OS X開發人員匯集新聞, 常見問題, 原創文檔和其他技術信息的地方:

http://www.macdevcenter.com/

Cocoa Dev Central
這個網站頻繁地為Cocoa初學者更新小提示, 小技巧和開發指導. 它還有很多和其他Cocoa網站的鏈接:

http://www.cocoadevcentral.com/

CocoaDev Wiki
這個用戶可以自己參與編寫的網站供Mac OS X開發人員社區使用. 如果您從來沒用過Wiki, 這種風格的網站能讓任何瀏覽網站的人都能為之增添新信息

http://www.cocoadev.com/

MacTech雜志
MacTech網站也包含了很多可以下載的資源以及網頁版的MacTech在線雜志, 它每月都有來自雜志的專題提供在線的技術和資源. 這些資源包括網頁的鏈接, 共享軟件, 新聞組, 郵件列表, 和面向Mac程序員的頻道

http://www.mactech.com/

郵件列表
Apple的cocoa-dev郵件列表
由蘋果主持的專注在Cocoa開發問題的郵件列表.
http://lists.apple.com/mailman/listinfo/cocoa-dev

Apple的xcode-users郵件列表
由蘋果主持的關於Xcode問題的郵件列表.
http://lists.apple.com/mailman/listinfo/xcode-users

The OmniGroup的MacOSX-dev郵件列表
由一家黃金級Cocoa開發工作室建立的供開發人員互相幫助的郵件列表.
http://www.omnigroup.com/mailman/listinfo/macosx-dev

Cocoa詞匯表

| No Comments | No TrackBacks
A
abstract
抽象

accessor method
訪問方法

aggregation
聚合

alias
替身

API
應用程序編程接口

ADC
Apple Developer Connection
蘋果開發人員聯盟

Aqua
Aqua is the graphical user interface and primary visual theme of Apple Inc.'s Mac OS Xoperating system

Architecture
架構, 體系結構

archive
n. 存檔; v. 歸檔

array
(軟件的)數組; (硬件的)陣列

association
關聯

autorelease pool
自動釋放池

B
boot/bootable
引導/可引導的

Boot Manager
引導管理器

box
方框

breakpoint
斷點

browser
瀏覽器

buffer
緩沖, 緩沖區

build
v. 構建(工程), 聯編(代碼)

Build and Debug
構建並調試

Build and Go
構建並執行

bundle
文件包

bus master
總線主控程序

C
cache
快存, 緩存

call
調用 (函數, 方法, 接口)

callback
回調

Carbonized
Carbon化

category
分類

cell
控制單元

checkbox
選框, 復選框

click
點擊

clipboard
剪貼板

Cocoalized
Cocoa化

coding
編碼, 編寫代碼

cohesion
內聚

color space
色彩空間, 色域

color well
選色框

combo box
組合框

command gate
命令門

compile / compiler
編譯 / 編譯器

compiler directive
編譯指令

component
組件

composition
合成

concatenate
(字符串的)連接

configure / configuration
配置, 設置

console
控制台

contextual menu
右鍵菜單

control
控件

copy
n. 副本, v. 拷貝

core program framework
核心程序框架

coupling
耦合

credit
功勞簿, 開發團隊

cursor
光標, 鼠標指針

custom view
自定義視圖

cycle
生命周期, 周期

D
Darwin
Darwin is an open source UNIX computer operating system released by Apple Inc. in 2000. It is composed of code developed by Apple, code derived from NEXTSTEP, and code derived from FreeBSD and other free software projects.


deallocation
回收

delegate / delegation
委托 / 委托機制

design-time
設計環境

designated initializer
指定初始化方法

designator
命名

Developer Document
開發文檔

disable
禁用

disc
光盤, 移動硬盤

disk
磁盤

Dock
n. Dock欄; v. 放入Dock

drawer
抽屜(窗口)

duplicate
復制

E
eject
彈出

emulate / emulator
仿真 / 仿真器

enable
啟用

encapsulation
封裝

enumerate
枚舉

event cycle
事件周期

event loop
事件循環

export / exportor
導出 / 導出器

F
field
(界面中的)域

file wrapper
文件包裝

File's Owner
文件擁有者

first responder
第一響應對象

folder
文件夾

forced
強制(的)

fork
分支

form
表單

formatter
格式器

foundation
基礎

framework
框架

G

generalization
泛化

graphic
圖形

GUI
圖形用戶界面

guideline
准則, 向導線

H
hierarchy
層次

hook
掛接

I
identifier
標識符

image well
圖相框

inheritance
繼承

initial first responder
初始響應對象

initializer
初始化方法

inline
內聯

inspector
查看器

instance
(類的)實例

interrupt handler
中斷處理程序

introspection
內省

K
kernel environment
內核環境

kernel extension
內核擴展

Key Equiv.
等效按鍵

key window
鍵窗口

key-value pair
鍵值對

L
language-aware keyword highlight
語法點亮

library


license
授權

link / linker
連接 / 連接器

load
v. 加載(到內存), 裝載(組件), 讀取(文件);
n. 負荷, 負載

log
日志

low level
底層, 底層的

M

Mac / Macintosh
Macintosh, commonly nicknamed Mac, is a brand name which covers several lines of personal computers designed, developed, and marketed by Apple Inc. The Macintosh 128K was released on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a graphical user interface (GUI) rather than a command line interface.

mailing list
郵件列表

map
v. 映像

margin
頁邊距

matrix
矩陣

memory cursor
內存光標

memory descriptor
內存描述符

memory protection
內存保護

menu bar
菜單欄

message
消息

mirror
鏡像

mode
模式

modifier key
修飾鍵

mount
掛載

mutable / immutable
可變的 / 不可變的

mutex
互斥體

N
namespace
名字空間

native
原生的

notification
通告

nub
結點

O
oserver
監聽者

offscreen
下屏

onsereen
上屏

OS
Operating System
操作系統

outlet
插座變量

outline view
大綱視圖

overload
(類的)重載, (物品, 電)超載

override
(類的)覆蓋

P
palette
(控件, 組件)選盤

panel
面板

parse
語法分析, 解析

pasteboard
剪貼板

plug-in
插件

polymorphism
多態

preference
偏好設置

preinstall
預裝

preload
預載

procedure
過程

programming interface
編程接口

progress indicator
進度指示器

property list
屬性列表

R
redo
重做

release
釋放(對象, 內存); 發布(版本, 軟件)

Release Note
發布說明

reload
重新加載

responder
響應對象

retain
保持

retain count
保持計數

reusable
可復用的

revert
復原

root


routine
例程

runtime
運行環境


S

schema
(操作)策略, (數據庫)結構

screen
屏幕

scrolling list
滾動列表

selector
選標

serialize / serializer
序列化 / 序列化器

sheet
卷簾窗口

shortcut
快捷鍵

simulate / simulator
模擬 / 模擬器

slider
劃動條

socket
套接字

specification
規范, 規格說明

stack
堆棧

stepper
步進器

stubbed method
存根方法

subclass
子類

subview
子視圖

symbolic link
符號鏈接

synchronous / asynchronous
同步的 / 異步的

T
tab
(窗口中分頁的)頁簽

target / action
目標 / 動作模式

text field
文本框

text label
文本標簽

timestamp
時間戳

titlebar
標題欄

token
令牌, 格式符

tracking rectangle
跟蹤矩形

triangle / disclosure triangle
(三角形)展開符號

U
underlying
下層, 下層的

undo
還原

Unique Application Identifiers
唯一應用程序標識

Universal Access
萬能輔助

Universal Binary
通用二進制

unload
卸載

unmount
卸下

V
viewer
觀察器

volume
卷, 卷宗

W
widget
窗口部件

wired memory
聯系內存

work loop
工作環

WYSIWYG
what you see is what you get
所見即所得

Foundation: Every object-oriented programming language needs the standard value, collection, and utility classes. Strings, dates, lists, threads, and timers are in the Foundation framework.

AppKit: All things related to the user interface are in the AppKit framework. Windows, buttons, text fields, events, and drawing classes are in the AppKit. You will also see this framework called the ApplicationKit.

Core Data: Core Data makes it easy to save your objects to a file and then reload them into memory. We say that Core Data is a persistence framework.

About this Archive

This page is an archive of recent entries in the Cocoa category.

Adobe is the previous category.

etc is the next category.

Find recent content on the main index or look in the archives to find all content.