2009-09-22 2 views
17

내 프로젝트의 모든 클래스에 대한 현재 클래스 이름과 메소드 이름의 추적 메시지를 넣을 수 있기를 원합니다.동적으로 현재 메소드 이름 검색

실행시 현재 메소드의 이름을 얻을 수있는 방법이 유사 있나요 :

자기 NSObject의에서 클래스를 파생
NSLog(@"classname: %@", [self className]); 

?

답변

35
NSLog(@"method name: %@", NSStringFromSelector(_cmd)); 

_cmd 모든 목표 - C의 방법은받을 수 숨겨진 인수 (같은 self)입니다. 이 값은 메서드 호출에 사용 된 선택기입니다.

+0

내가 SEL myRunTimeSelector = _cmd을 사용합니다. 감사합니다 – Alok

+0

설명이 포함 된 적절한 솔루션. 감사. –

18
편집을 할

: 내가

NSLog(@"%s", __PRETTY_FUNCTION__); 
+0

내 사과는 내가 condescending으로 나온다면, 그다지 의미가 ... 나는이 솔루션을 더 일반적인 것으로 발견 ... – Nishant

+2

좋은 대답. 나는 다음과 같이 매크로에 넣는다 : # LOGINE NSLog (@ "% s", \ _ \ _ PRETTY_FUNCTION \ _ \ _); –

+0

대단한 답변 @Nishant .. 좋은 디버깅을 위해 클래스 이름과 메소드 이름을 모두 제공하고 있습니다 ... –

1

이것은 또한 작동합니다 .. 그것을 확인 ...이 방법이 더 일반적인 생각 :

NSLog(@"%@", [NSString stringWithUTF8String:__func__])