달력

10

« 2024/10 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
아래 이전 글에서 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에서 컴파일한걸 같이 올립니다.

:
Posted by netkorea