NS如何以重写描述方法记录对象的内存地址?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我重写一个对象的描述方法。我需要知道如何在下面的代码中打印对象的内存地址来替换{???}

-(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
            {???}, self.parameterOne, self.paramterTwo];
}

我希望它能像这样在控制台中打印:

<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
提问于
用户回答回答于

打印地址使用%p格式说明符和自指针:

-(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %p>\nparmeterOne: %@\nparameterTwo: %@",
            self, self.parameterOne, self.paramterTwo];
}
用户回答回答于

最简单的方法是

- (NSString *)description
{
    return [NSString stringWithFormat:@"%@ Area: %@, %@", [super description], self.identifier, self.name];
}

因此,在这个模型对象是NSObject的子类的情况下,你可以躲避额外的工作并记住%p

手动使用NSStringWithClass()和%p

- (NSString *)description
{
    return [NSString stringWithFormat:@"<%@: %p> Area: %@, %@", NSStringFromClass([self class]), self, self.identifier, self.name];
}

所以在一个对象模型中,你有一个派生自这个类的具体实现者,你将显示正确的类名。

扫码关注云+社区