According the Objective-C runtime reference:
ivar_getOffset Returns the offset of an instance variable.
ptrdiff_t ivar_getOffset(Ivar ivar) Discussion For instance variables of type id or other object types, call object_getIvar and object_setIvar instead of using this offset to access the instance variable data directly.
Declared In runtime.h
Why is this? What does object_getIvar do to object types?
EDIT: changed question from subscripting (void *) to (id *).