NSLog адрес памяти объекта в переопределенном методе описания
Я переопределяю метод описания объекта. Мне нужно знать, как напечатать адрес памяти объекта для замены {???} в код ниже:
-(NSString *) description {
return [NSString stringWithFormat:@"<SomeClass: %@>nparmeterOne: %@nparameterTwo: %@",
{???}, self.parameterOne, self.paramterTwo];
}
Я хочу, чтобы он печатал в консоли следующим образом:
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
2 ответа:
для печати адреса используйте
%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]; }
поэтому в случае объектной модели, в которой у вас есть конкретный реализатор, производный от этого класса, вы покажете правильное имя класса.