2010-04-21 2 views
1

재사용 가능한 로깅 메서드 나 함수가 호출 된 메서드의 이름을 뱉어내는 함수를 갖고 싶습니다. 예 :목표 C : 메서드가 호출 된 컨텍스트에 대한 지식이 있습니까?

- (void)exampleMethod { 
     CustomLog(); //Outputs "exampleMethod" 
    } 
+0

중복 http://stackoverflow.com/questions/1451342/objective-c-find-caller-of-method? –

+0

질문은 중복되었습니다. (예를 들어 보지 못했지만 검색했습니다.)하지만 그 질문에 제공된 대답은 어쨌든 유용하지 않았습니다. 아래의 두 가지 유용한 답변이이 질문에 제공되었습니다. 그래도 속임수를 찾아 주셔서 감사합니다. –

답변

2

함수는 적어도 유용한 방식으로는 알지 못합니다. 유일한 방법은 대신 매크로를 사용하는 것입니다. 매크로 내부에서 수신자와 현재 선택기를 보유하는 및 _cmd 인수뿐만 아니라 사람이 읽을 수있는 메서드 이름을 C 문자열로 포함하는 __PRETTY_FUNCTION__ 매크로에 액세스 할 수 있습니다.

0

이 대답과 다른 유용한 NSLog 팁에 영감을 얻으려면 How to print out the method name and line number and conditionally disable NSLog?을 참조하십시오. 여기 내가 원하는 걸 :

//place in PCH file 
#define ILog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 

//use in any file in your project 
ILog(@"test");// outputs -[AppDelegate applicationDidFinishLaunching:] [Line 38] test 
관련 문제