开发者

NSLog an object's memory address in overridden description method

开发者 https://www.devze.com 2023-04-07 08:39 出处:网络
I am overriding an object\'s description method. I need to know how to print the object\'s memory address to rep开发者_开发知识库lace {???} in the code below:

I am overriding an object's description method. I need to know how to print the object's memory address to rep开发者_开发知识库lace {???} in the code below:

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

I want it to print in the console like this:

<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages


To print address use %p format specifier and self pointer:

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


The easiest method is to use the super description

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

So in the case of this model object that is a subclass of NSObject, you can dodge extra work and remembering %p.

Manually using NSStringWithClass() and %p

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

So in the case of an object model in which you have a concrete implementer that is derived from this class you will show the correct class name.

0

精彩评论

暂无评论...
验证码 换一张
取 消