如果我将对象的地址作为NSString,如何获取对象指针?

时间:2018-01-16 14:38:25

标签: objective-c memory

我有一个对象的地址,我得到的是NSString(例如“0x1c42633c0”)。我怎么能从那里得到指向对象的指针?

我搜索的范围很广,但是在这里没有找到任何描述相同问题的问题,只看到人们要求相反的方向 - 获取他们指向的对象的地址。

1 个答案:

答案 0 :(得分:1)

我不确定为什么你会有一个指针作为字符串,但你当然可以做到。您将字符串转换为二进制,然后使用强制转换为您想要的类型。请注意,如果地址无效,应用会崩溃。

// Change NSObject to your desired class
NSString *stringAddress = @"0x123456789";
unsigned long long hexAddress;
[[NSScanner scannerWithString:stringAddress] scanHexLongLong:&hexAddress];
NSObject *p = (__bridge id)(void *)hexAddress;