Since it is a pointer then why doesn't dataValue (or id) have an asterisk?
Doesn't a pointer have its own memory address and the value it holds at that memory address is the address of an object? I know you made a point of the fact, in the book, that dataValue doesn't have an asterisk but I wondered why it doesn't.
I was afraid you would ask that question!

The asterisk is "hidden" by the way
id is defined. It's actually a
typedef (described in Chapter 10--see the example of
NumberObject on page 219) that looks like this:
typedef struct objc_object {
Class isa;
} *id;
Without getting into too much detail,
id is defined here as a pointer to an
objc_object structure (described in Chapter 12). Let's leave it at that for now!

Cheers,
Steve Kochan