objective-c for Java程式員 第一部分
對象和基本類型
Java包含了原始的,或一小部分的內在類型。這些值是不是對象是Java和Smalltalk之間最大的語義上的區別之一。在Smalltalk中,原始類型被視為對象,並通過編譯器或虛擬機器的透明盒裝。在Java和Objective-C,它們是明確的。
Java只有一個原始類型的一小部分;四種符號整數,兩種(簽字)浮點值,布爾,字元。Objective-C的所有C支援的原始類型。核心組是相似的,但有一些重要的差異。首先是C只定義了一種類型的最小範圍。短Java中始終是16位。短在C通常是16位。Java中的一個 int, 始終是32位。一個 int,
在C是16,32或64位的平台上,今天存在,可能在未來的128位,但通常是32位的平台上,在那裡你可以使用Objective-C的。
Objective-C中繼承的typedef從C關鍵字和一個標準的定義很多。stdint.h頭,例如,定義uint32_t和int32_t類型的,總是無符號的或簽署的每一個平台上,你可以使用32位整數。
一個的typedef “,Objective-C的標準提供了D型是BOOL,這應該只有YES或NO。這實在是一個 char (在大多數平台上的八位位組),並有各種不同的方法,它可能會得到一個值是既不YES或NO。
Java和Objective-C中的份額為原始類型相同的初始化規則。如果他們在聲明一個執行個體變數中的對象(什麼是Java調用一個欄位),那麼他們將被初始化為0時被執行個體化的對象。如果他們是局部變數,那麼他們將被初始化為一個未定義的值。
從技術上講,Objective-C中沒有定義如何執行個體化對象。不像Java,Objective-C中沒有定義所有的記憶體模型,它繼承了它是從C對象,按照慣例,分配的東西,封裝的Ç calloc()函數的庫函數。OS X上,這個包裹是相當複雜的,但最終的結果是,你建立的每個對象將未初始化的值設定為0。
一個重要的區別是,Objective-C中繼承所有C.在Java中的非結構性物件類型,一切都是一個對象或一個原始。Objective-C中,你也有結構,原始陣列,和工會。
Cocoa在一些地方使用的一些結構,這些包括類似的事情的NSPoint,這代表了二維空間中的點。不同的對象,它們總是通過引用傳遞,結構通常是按值傳遞。他們比真實的對象還要容易建立。