달력

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를 편하게 삽입해주는 툴을 찾아서 공유하려합니다.

먼저 NSLog에 대한 팁으로부터 시작하죠.
It's NSLog, NSLog... 를 보면 필자도 아래처럼 NSLog를 사용했었다는군요.

NSLog(@"Now entering viewDidLoad in RootViewController");
// Do stuff
NSLog(@"Now leaving viewDidLoad in RootViewController");

그러다가 this page(Logging Current Method or Function)를 알게되었다는 군요. 좋네요. 훌륭합니다. NSLog를 아래처럼 사용하면 자동으로 함수명이 출력된다고 합니다.

NSLog(@"%s", __PRETTY_FUNCTION__);
*2008-12-12 09:22:49.552 Healthcheck[79016:20b] -[HealthcheckAppDelegate applicationDidFinishLaunching:]*

 

개발용은 NSLog를 사용하더라도 배포용에는 NSLog가 필요없겠죠. 블로그에 자세한 설명이 나와있으니 간략히 정리만 하겠습니다. 자세한 내용은 위 블로그에 가보세요. ^^;

1. xcodeproject의 pch 파일에 다음 내용 입력 (DCBLOCKNSLOGSTATEMENTS은 보통 RELEASE_MODE등으로 많이쓰죠?)
#ifdef DCBLOCKNSLOGSTATEMENTS
#define NSLog(format, ...)
#else
#define NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
#endif

2. Release Configuration의 GCC 4.2 - Preprocessing의 Preprocess Macros와 Preprocess Macros Not Used In Precompiled Headers에 DCBLOCKNSLOGSTATEMENTS 추가

3. 당연한 예기지만 Debug Configuration에선 DCBLOCKNSLOGSTATEMENTS 정의하면 안되겠죠? ^^;

그래서 이 글을 적은 블로거가 이렇게 NSLog를 잘 사용했는데, 그래도 코드 타이핑하기가 너무 귀찮더랍니다. 그런 이유로 NSLog를 좀 더 쉽게 입력해주는 툴을 만들었다고 합니다.

Free Utility For Adding Logs 에 가보시면 다운받을 수 있습니다. 혹시 다운 링크가 께질지 모르니 미래를 위해 여기에도 올려둡니다. ㅎㅎ Build해서 Automator에 추가한 후 Service Template이용해서 새 Workflow만들어 줍니다. 이때 Service는 <any application>에 대해 <text>를 받아들이도록 합니다. <Replaces selected text> 도 체크해서 선택해주도록 합니다.

단축키 등록은 System Preferences -> Keyboard -> Keyboard Shortcuts tab에서 좌측에서 Services를 선택하고 우측에서 Automatror에서 저장한 이름을 찾습니다. Text항목 밑에 있을 겁니다. 거기서 단축키를 지정해 주시면 됩니다.


테스트는 xcode를 실행중이었다면 닫고 다시 실행합니다. 그냥하면 단축키가 작동안하더군요. method 정의의 {나 }를 더블클릭하면 method이름을 제외한 전체 method 블록이 선택되는데, 이때 단축키를 눌러줍니다. 그럼 NSLog가 추가됩니다. method 본체뿐만 아니라 어떤 Block에서도 가능한 모양이네요. 타이핑 작업을 획기적으로 줄여주는 참 유용한 툴인것 같습니다.

만든분이 영감을 얻었고 강력 추천한다는 Accessorizer 을 보니 참 많은 기능이 있는 것 같네요. 관심있는 분은 이것도 사용해 보시면 좋을 것 같습니다. $15이라는거 같네요.

:
Posted by netkorea