2009-09-09 4 views
12

클래스에 대한 dealloc 메소드에서 할당 해제되는 인스턴스에 대한 ID (또는 다른 고유 식별자)를 어떻게 인쇄합니까?NSLog에 인스턴스 ID 인쇄?

- (void)dealloc { 
    NSLog(@"_deallocing: ??"); 
    [super dealloc]; 
} 

가능합니까? 나는 단지 학습을 돕기 위해 콘솔에서 좀 더 피드백을 얻으려고 노력하고있다. 콘솔에 개체에 대한

- (void)dealloc { 
    NSLog(@"_deallocing: %@", self); 
    [super dealloc]; 
} 

이 출력됩니다 좀 더 많은 정보를 :

많은 감사이 시도

답변

6

을 -gary-. 클래스에 따라 메모리 주소와 클래스 이름 또는 더 자세한 정보가 표시됩니다. 특별히 I "는 간주 될 수도있을 것 같군요 객체의 메모리 주소를 (원하는 경우

-(NSString *)description { 
    return @"Something useful about this object"; 
} 
+0

우수, 그래서 "자기"가 단순히 클래스의 기본 설명에 액세스하고 있다고 가정 할 수 있습니까? – fuzzygoat

+0

맞습니다. NSLog() 함수는 % @를 주어진 객체의 설명으로 바꿉니다. NSObject의 -description 메소드는 기본 값을 제공합니다. NSLog와 관련된 유용한 정보에 대한 자세한 내용은 다음을 참조하십시오. http://www.cocoadev.com/index.pl?NSLog – iKenndac

+0

다른 클래스의 ID를 원하면 어떻게해야합니까? 예 : 멤버 변수가 NSMutableArray이고 인스턴스 ID를 출력하고 싶습니다. –

52

을 : 당신은, 자신의 클래스에 대한 자세한 뭔가를주고 당신이 원하는 무엇이든이 방법과 수익을 재정의하려는 경우 당신은) 하나의 클래스에서 구현하지 않은 경우 식별자 ", 당신은이를 사용할 수 있습니다

NSLog(@"deallocing %p", self); 

특정 클래스의 인스턴스를 두 개 이상 가지고 어떤 결정하려고하는 경우에 오히려 도움이 될 수 있습니다 언제 데럴거야.

+0

감사합니다 dmkash, 그게 좋은 지적, 많이 감사합니다. – fuzzygoat

+0

문자열 형식 지정자에 대한 문서 : https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html – LopSae