Is there any better way to get the memory address than this?
NSLog(@"%p", anObject);
I would rather get the plain long value.
Also you can caste some Type* to intptr_t, and look at this address in decimal representation:
NSLog(@"%lu", (uintptr_t)anObject);
To represent pointer address as integer in C exists 2 types: intptr_t and uintptr_t.
intptr_t is defined as __darwin_intptr_t.
and __darwin_intptr_t defined as long:
typedef long __darwin_intptr_t;
uintptr_t defined as unsigned long:
typedef unsigned long uintptr_t;
I think what for uintptr_t I should use %lu and for intptr_t I should use %li:
NSLog(@"%lu", (uintptr_t)anObject);
NSLog(@"%li", (intptr_t)anObject);