首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在重写的描述方法中NSLog对象的内存地址

在重写的描述方法中NSLog对象的内存地址
EN

Stack Overflow用户
提问于 2011-09-26 20:36:09
回答 2查看 44.9K关注 0票数 119

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

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

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

代码语言:javascript
复制
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-26 20:39:25

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

代码语言:javascript
复制
-(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %p>\nparmeterOne: %@\nparameterTwo: %@",
            self, self.parameterOne, self.paramterTwo];
}
票数 217
EN

Stack Overflow用户

发布于 2013-12-10 17:39:21

最简单的方法是使用超级描述

代码语言:javascript
复制
- (NSString *)description
{
    return [NSString stringWithFormat:@"%@ Area: %@, %@", [super description], self.identifier, self.name];
}

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

手动使用NSStringWithClass()和%p

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

因此,在对象模型中,您有一个从该类派生的具体实现者,您将显示正确的类名。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7555143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档