객체의 설명 방법을 재정의하고 있습니다. 아래 코드에서 {???} 를 대체하기 위해 객체의 메모리 주소를 인쇄하는 방법을 알고 싶습니다 .
-(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];
}
따라서이 클래스에서 파생 된 구체적인 구현자가있는 객체 모델의 경우 올바른 클래스 이름을 표시합니다.