天天看點

Objective-C學習筆記-之id

id是一種泛型,用于表示任何類的對象。回憶一下,對象是帶有代碼的Cstruct。是以,id實際上是一個指針,指向其中的某個結構。在概念上,id有點類似于java中的Object類,可以轉換成任何資料類型。在内部處理上,這種類型被定義為指向對象的指針,實際上是一個指向這種對象的執行個體變量的指針。

下面是id在objc.h中的定義:

typedef struct objc_object {  

Class isa;  

} *id; 

從上面看出,id 是指向struct objc_object 的一個指針。也就是說,id 是一個指向任何一個繼承了Object(或者NSObject)類的對象。需要注意的是id 是一個指針,是以在使用id的時候不需要加星号。

在Objective-C中,id取代了int類型成為預設的資料類型(在C語言中,int是預設的函數傳回值類型),關鍵字nil 被定義為空對象,也就是值為0 的對象。關于更多的Objective-C基本類型,讀者可以參考obj/objc.h檔案。

id shape = shapes[i];

代碼從shapes數組中擷取id(即指向某個對象的指針),并将其指派給名為shape(它具有類型id)的變量。這是一種指針指派的過程,它實際上并不會指派shape的全部内容