개발 - iPhone/개발 환경 구축

xCode에서 단축키로 현재 method의 시작과 끝에 NSLog를 삽입하는 Utility - 2

netkorea 2010. 7. 24. 15:28
아래 이전 글에서 NSLog를 삽입하는 Automator를 소개하고 잘 사용중인데 아주 약간 불편한게 있어서 수정하고 공유합니다.
2010/07/22 - [개발 - iPhone/개발 환경 구축] - xCode에서 단축키로 현재 method의 시작과 끝에 NSLog를 삽입하는 Utility

원저작자처럼 NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);로 사용할 경우, __PRETTY_FUNCTION__가 Preprocessor의 전처리기이다보니 실제 NSLog를 호출하는 Class의 하위 Class에서는 Runtime시에 어떤 Class가 실행되는지 알 수 없더군요.

그래서 아래처럼 수정했습니다.
    NSString *entryString = @"\tNSLog(@\"##### Entering %@-[%s] [%@] [%@]\", self,__PRETTY_FUNCTION__,self,self);";
    NSString *exitString =  @"\tNSLog(@\"----- Leaving %@-[%s] [%@] [%@]\", self,__PRETTY_FUNCTION__,self,self);";
__PRETTY_FUNCTION__전의 self는 runtime Class를 알기위함이고, 이 후의 self는 실제 Log를 출력할 때 관심있는 변수를 출력하기위해 미리 공간을 마련해둔겁니다. 어짜피 이전 글대로 Project 세팅을 했으면 Release시엔 NSLog가 출력되지 않을 것이기에 디버깅하는 동안엔 좀 더 많은 내용을 간편하게 출력하고 싶더군요. ^^;

실제 효용성이 있는진 모르겠지만, 2번 입력방지하는 부분에선 아래 문자열을 이용해 검사하도록 했습니다. 그런데 소스 코드 보면서 작업할건데 2번입력할 일이 있기나한지 모르겠네요. ㅎㅎ
    NSString *entryMask = @"\tNSLog(@\"##### Entering %@-[%s] [%@] [%@]";
    NSString *exitMask =  @"\tNSLog(@\"----- Leaving %@-[%s] [%@] [%@]";

변경한 소스와 Snow Leopard에서 컴파일한걸 같이 올립니다.