为什么调试器说"类名= ..."而不是内存位置?

时间:2015-07-17 18:49:55

标签: ios objective-c xcode

我有一个对象我正在使用一些遗留方法初始化,并且在调试器中看起来很奇怪。具体来说,我明白了:

(Foo *) class name = Foo

而不是

(Foo *) 0xWhatever

Foo对象由初始化程序创建,看起来很好:

@implementation Foo

- (instancetype)initWithLegacyFoo:(LegacyFoo *)legacyFoo
{
    self = [super init];
    if (self) {
        self.name = legacyFoo.name;
        self.userId = legacyFoo.userId;
        ...
    }
    return self;
}

对象似乎很好看。发生了什么事?

1 个答案:

答案 0 :(得分:0)

调试器调用description方法来打印其日志。我会检查是否在违规类中覆盖了该方法。 e.g。

- (NSString *)description
{
     return [NSString stringWithFormat:@"test class description"];
}

如果我在调试器中PO这个类的实例,它会吐出“测试类描述”而不是内存地址