Я бы сделал это:
NSObject *p = <object>
int n = 0xdeadbeef;
NSValue *v = [NSValue valueWithPointer:(void *)((uint32_t )p + n)];
NSLog(@"p = %p n = %x v = %@",p,n,v);
Указатели - это целочисленные типы, размер которых зависит от вашей платформы (обычно 32 или 64 бита), которые могут быть добавлены к другим интегральным типам с помощью подходящего приведения. Просто убедитесь, что приведен тип, длина которого больше или равна длине указателя void. Это гарантирует, что вы не обрежете указатель.