Таким образом, это очень легко получить «адрес памяти» указатель объекта, а-ля ..Как разыменовать объект Objective-C через его адрес указателя/памяти?
id x = @"obj"; printf("'x' is at: %p", x);
'x' is at: 0x100b60048
Удивительно, но я не могу найти какой-либо ссылки как как выполнить «обратную» операцию. то есть. получить ссылку на указатель на объект, либо через адрес указателя шестигранной int
, или это строковое представление ...
NSString * ptr = @"0x100b60048";
unsigned addr = 0;
NSScanner * scn = [NSScanner scannerWithString:ptr];
[scn scanHexInt:&addr];
я наткнулся на следующий «путь», но а) не работает (он падает) и б) раздражает хрупкие чувства компилятора (он же, он выдает предупреждения, lol).
id z = (__bridge id)((void*)addr);
Итак, что такое «правильный», современный, совместимый с ARC способ сделать это?
Я предполагаю, что единственный правильный путь: не делайте этого.Но могу ли я спросить, для чего вам это нужно? – vikingosegundo
Я хочу, чтобы передать ссылку на объект в виде строки. –
это звучит чрезвычайно опасно. Почему ты бы так поступил? – vikingosegundo