Objective-C語言被設計成一種精緻的,物件導向的,用法簡單的電腦語言。它是完全基於標準C語言,並且做了最小的,但是功能強大的擴充的語言。這個擴充語言借鑒了是早期的能支援物件導向的語言Smalltalk的風格。Objective-C使用一種簡單易懂的方式使得C語言能夠完全支援物件導向。
大部分物件導向的開發都保護下面幾個部分:
一個物件導向的語言
一個類庫
一系列的開發工具
一個運行期環境
本文檔描述了開發環境的第一部分--程式語言。同時對第二部--類庫--提供簡單描述,Objective-C提供了編程架構--即Cocoa。關於運行期是被描述在一個單獨的文檔中--Objective-C
Runtime Programming Guide.
誰應該讀本文檔
本文檔的預期讀者會對如下內容感興趣:
Objective-C編程
Cocoa應用庫的基本資料
本文檔不只是介紹Objective-C的物件導向特性,而是全面介紹這個語言本身。當然,只是專註於對C的擴充部分,而不保護C語言本身。
由於不是描述C語言的文檔,所以這裡要求讀者需要一定的C語言基礎。由於物件導向是和C語言的面向過程非常不同,所以即使你不是C語言的專家,也不會妨礙你對本文檔的理解的。
本文檔的組織圖
下面的章節覆蓋了所以對C語言的擴充。
“執行個體,類和訊息”
“定義一個類”
“協議”
“定義屬性變數”
“類別和擴充”
“聯合引用”
“快速枚舉”
“靜態繫結”
“選取器”
“異常處理”
“線程”
文章的最後有一個所有Objective-C語言和物件導向名詞的解釋匯總。
約定
本文檔使用淺體字和粗體字表示不同的部分。前體表示這個部分必須使用這樣的字元,不能有所有變化,粗體表示是可以自己定義的。比如,下面的代碼:
@interface
ClassName (
CategoryName )
表示@interface 和其他的兩個部分是必須的,但是你可以選擇類名和類別名。
在例子代碼中,省略符號表示這有一些代碼,但是沒有顯示出來:
- (void)encodeWithCoder:(NSCoder *)coder |
{ |
[super encodeWithCoder:coder]; |
... |
} |
參看
如果你從來沒有物件導向編程經驗,請先看文章Object-Oriented
Programming with Objective-C。如果你有其他語言,比如C++,JAVA等語言的物件導向開發經驗,也建議你讀一下這個文章,因為Objecctive-C的物件導向的語言支援和其他的語言是不同的。Object-Oriented
Programming with Objective-C 為你站在Objective-C開發人員的角度來熟悉物件導向編程提供協助。他提供了物件導向的設計思路,以及如何寫真正的面對對象的程式。
運行期系統
Objective-C
Runtime Programming Guide 描述了Objective-C的運行期特性,以及你如何用它。
Objective-C
Runtime Reference 描述了Objective-C在運行期系統方面提供的結構和函數。你可以使用這些支援和運行期系統進行互動,比如你可以動態增加類,或為類增加函數,或得到載入庫中所有的類的列表。
記憶體管理
Objective-C支援三種方式的記憶體管理機制:即在自動記憶體回收和記憶體計數器上的技術:
自動記憶體計數管理 (ARC),編譯器負責管理執行個體的生命週期。
手動管理記憶體計數器 (MRC,有時候稱MRR為“手動增加/釋放”),程式員負責所有的記憶體管理工作。
手動管理記憶體的方式描述在文章Advanced
Memory Management Programming Guide中。
記憶體回收,系統提供記憶體回收齊來自動管理記憶體管理和執行個體生命週期管理。 where you pass responsibility for determining the lifetime of objects to an automatic “collector.”
記憶體回收技術描述在Garbage Collection Programming Guide中。 (本技術不能用在iOS開發中—你也不能通過iOS開發中心看到上面的這個文檔)