Tag Archives: 아이팟

[iPhone] 스테이터스바에 네트워크 인디케이터 달기

상단에 있는 스테이터스바에 네트워크 통신시에 로딩중 표시같은 빙글빙글 돌아가는것을 보신적이 있을겁니다.

저는 이것이 통신을 하면 자동으로 되는 것인줄 알았습니다. 근데 아니더군요. 하지만 간단하게 구현 가능합니다.

실제로 스테이터스바에는 NetworkIndicator 라는 것이 달려있습니다. 이것이 무엇인지 감이 안오실 분들을 위한 예제 사진 감상.
사용자 삽입 이미지왼쪽 상단에 안테나 표시 오른편에 보이시나요? 저게 움직입니다. 참고로 시뮬레이터에서는 나오지 않습니다.

iPhone SDK에는 UIActivityIndicator라는 컨트롤이 있는데요, 이 컨트롤이 저 위에 달렸다고 생각하시면 됩니다.

어떻게 하는건지 아시면 너무 간단해서 이 글을 읽으신게 후회되실지도 모릅니다-_-a

[code]// 인디케이터를 작동시킨다.
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
 
// 인디케이터를 없앤다.
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];[/code]

차암~쉽죠잉~
1090999277.zip참고 : http://www.iphonedevsdk.com/forum/iphone-sdk-development/1972-activitymonitor-status-bar.html

[iPhone] NSLog 업그레이드 + Debug 모드에서만 로깅하기

iPhone 개발환경을 보면 Visual Studio, Eclipse와 같은 화려한 IDE의 지원을 받아오던 저로서는 답답하고 답답하고 안타깝기에 그지없는 상황이 자주 연출되곤 합니다.

가끔씩 gdb에 근거한 알수없는 로깅시스템도 한몫을 하는데요 우리의 허접하기 짝이없는 NSLog를 화려하게 업그레이드 시키는 방법을 알아보도록 할까요.

우선 목표는 NSLog의 내용을 파일명과 에러발생 지점 라인, 기타 정보를 포함함과 동시에 빌드시에 선택하는 ActiveConfiguration을 Debug로 선택했을때만 로깅하도록 해보겠습니다.

사용자 삽입 이미지그림을 하나 보도록 하겠습니다. 이것과 같은 순서로 OTHER_CFLAGS를 추가하면 됩니다.
(1) 자신의 프로젝트 루트를 선택합니다.
(2) Info버튼을 눌러 Build 탭으로 이동합니다.
(3) Debug를 선택합니다.
(4) Show에서는 Setting defined this level을 선택해 줍니다.
(5) 그림에는 안나왔는데 좌측 하단의 Add User-defined setting을 눌러 OTHER_CFLAGS = -DDEBUG=1 을 추가해 줍니다.

이제 Debug모드로 컴파일할때는 #define DEBUG 1 이 자동으로 설정되게 됩니다.

이제 각각의 프로젝트의 prefix를 열어봅시다. 보통은 프로젝트명_Prefix.pch 이름을 가지고 있습니다.
다음을 추가해 주도록 합시다.

#ifdef DEBUG
    #define NSLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
    #define NSLog( s, ... )
#endif

이제는 Debug모드일때만 이쁘게 로깅을 하며, 그외의 경우에는 NSLog가 아예 동작하지 않게 됩니다. 한결 좋아졌네요.

참고 :
http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use-nslog-on-production-code