Как создать NSValue из сложения указателя и целого числа? - PullRequest
0 голосов
/ 11 июня 2009

Мне нужно создать ключ для NSMutableDictionary. Идеальным ключом было бы слияние указателя и целого числа.

Это будет работать только для указателя NSValue * key = [NSValue valueWithPointer: somePointer];

Как мне сложить somePointer + someInt, а затем сформировать ключ из результата?

1 Ответ

0 голосов
/ 11 июня 2009

Я бы сделал это:

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. Это гарантирует, что вы не обрежете указатель.

...