디버그 모드에서는 로그 나오게 하구 릴리즈에서는 로그 안나오게 하는 방법
http://theeye.pe.kr/entry/upgrade-NSLog-only-working-debug-mode
//——————————————————————–
대부분 NSLog를 이용해서 카운터를 찍어보시는 것 같은데, 소스코드 변경할 필요없이, gdb에서 바로 찍어 볼 수 있습니다.
1 |
(gdb) p (int)[obj retainCount] |
이렇게 명령을 주면, obj의 retain count를 바로 볼 수 있습니다.
//——————————————————————–
콘솔에 로그 찍어주기
1 |
NSLog(@"[%s:%d]",__FUNCTION__,__LINE__); |
//——————————————————————–
NSZombie를 enable 시키면 프로그램이 메모리 문제로 Crash 될 때, 어떤 class때문에 Crash 되나를 알려줍니다.
예를 들어서 어떤 오브젝트에다가 release를 2번이나 했습니다.
이경우 2번째 release 메시지가 첫번째 release에 의해서 deallocated된(메모리 사용이 도로 금지된, 혹은 이미 다른 용도로 쓰이는) 메모리로 보내지게 됩니다. 그러면 프로그램은 crash되버리죠.
이 때 만약 NSZombie를 enabled 시키면 어느 메모리가 해지된 클래스에다가 release메시지를 보냈는지 콘솔창에 뿌려줍니다.
XCode 왼쪽에 프로젝트 관리 바 메뉴 중 Excutables 를 펼치면 프로젝트 이름으로 된 뭔가 있다
오른쪽버튼 누르고 정보 보기? 누르세요. 그다음에 2번째 탭인 Arguments로 가시구요, 그러면 2개의 뷰가 있죠.
아래쪽이 바로 디버깅 환경변수를 설정 하는 뷰입니다.(위에껀 뭔지도 몰라요 ㅜㅜ)
변수를 추가하기 위해 하얀 뷰 아래 +를 누릅니다.
그럼 빈 엔트리가 하나 추가 됬죠? Name을 더블클릭하구 NSZombieEnabled 라구 칩니다.
Value에다가는 YES를 입력하시구요.
앱스토어에 올리실 때 zombie모드 끄고 내야함
//——————————————————————–
ctrl + ,를 누르면 아래 그림과 같이 메소드 리스트가 나옵니다. (,는 <와 같이 있는 키입니다)
//——————————————————————–
AppDelegate의 메소드를 싱행시키는 방법
1 2 |
id appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate method]; |