【问题标题】:Get memory address of Objective C object?获取Objective C对象的内存地址?
【发布时间】:2020-12-17 08:07:34
【问题描述】:

还有比这更好的获取内存地址的方法吗?

NSLog(@"%p", anObject);

我宁愿得到普通的 long 值。

【问题讨论】:

    标签: ios nsobject


    【解决方案1】:

    您也可以将一些Type* 转换为intptr_t,并以十进制表示形式查看此地址:

    NSLog(@"%lu", (uintptr_t)anObject);
    

    在C中将指针地址表示为整数存在2个typesintptr_tuintptr_t

    intptr_t 定义为__darwin_intptr_t
    __darwin_intptr_tdefined aslong:

    typedef long            __darwin_intptr_t;
    

    uintptr_t定义为unsigned long

    typedef unsigned long           uintptr_t;
    

    I think what 对于uintptr_t,我应该使用%lu,对于intptr_t,我应该使用%li

    NSLog(@"%lu", (uintptr_t)anObject);
    NSLog(@"%li", (intptr_t)anObject);
    

    【讨论】:

    • 您想将答案更改为:NSLog(@"%lu", (intptr_t) anObject); ?我刚刚测试成功。 %d 产生了一个位太少的负数。
    • 我也认为 uintptr_t 会是更好的类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多