If I\'m using Objective-C, here\'s how I declare an initialize an int:
int a = 1;
vs an object:
myObj *a = [[myObj alloc] init]
Pavel's answer is correct. Specifically, the "<mysterious-root-type> " is declared in objc.h as:
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
Because id is defined as:
typedef struct objc_object {
Class isa;
} *id;
So it's already a pointer.
Because id
means identifier. Identifier, like pointer, identifies the object. Identifier isn't the object itself.
You can always treat it as typedef <some-mysterious-root-type>* id
if you want.