development

재정의 된 설명 방법으로 개체의 메모리 주소를 NSLog

big-blog 2020. 7. 22. 07:35
반응형

재정의 된 설명 방법으로 개체의 메모리 주소를 NSLog


객체의 설명 방법을 재정의하고 있습니다. 아래 코드에서 {???} 를 대체하기 위해 객체의 메모리 주소를 인쇄하는 방법을 알아야합니다 .

-(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];
}

따라서이 클래스에서 파생 된 구체적인 구현자가있는 오브젝트 모델의 경우 올바른 클래스 이름을 표시합니다.

참고 URL : https://stackoverflow.com/questions/7555143/nslog-an-objects-memory-address-in-overridden-description-method

반응형