본문 바로가기

Program/iOS

iOS - Logging


- 배포버전에 따른 로깅 분기.

프로젝트 파일 중 appname-Prefix.pch  파일 내에 아래 코드를 삽입한다.
아래 코드는 DEBUG 가 define 되어있다면 로그는 출력하고 되어 있다.

#ifdef DEBUG

#define NSLog( s, ... ) NSLog( @"<%p %s:(%d)> %@", self, __FUNCTION__, __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )

#else

#define NSLog( s, ... )

#endif

그리고 #define DEBUG 를 소스 코드 상에 넣어도 좋겠지만..그럼 한 번이라도 손이 더 가게 되니깐..불편하다..

그래서.. 

프로젝트 Build Settings 에 LLVM GCC4.2 - Preprocessing 에 macro를 Debug에 설정하면 Release, Distribution 로 배포 할때는 로그가 찍히지 않는다..

- #define을 이용한 로그 코딩 줄이기.


#define logView(view) NSLog(@"description = %@", [view description])

#define log() NSLog(@"")

#define logBool(is) [NSString stringWithUTF8String:(char *)(is ? "YES""NO")]
 

#define logRect(rect) NSLog(@"rect = %@", NSStringFromCGRect(rect));  <- 요놈 대박..여태 몰라서  %f,%f..했는데..ㅠㅠ

뭐 define 이야 만들기 나름이니..^^;

RGB에 대한 define도 여러가지가 있지만..난 이게 젤 편해서리..
#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] 

이놈을 쓴다..

다른 방법으로는
 

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

요 놈도 있다.. 사용법은 다 똑같다.

UIColor* color = RGB(111, 111, 111); 
UIColor* color = UIColorFromRGB(0xff00ff); 

- UIView에서 계층 구조를 로그 출력하기.

+(void)logSubviews:(UIView*)view

{

    UIView* subview = nil;

    

    NSLog(@"view = %@", view);

    

    NSEnumerator* enumerator = [[view subviews] objectEnumerator];

    

    while( (subview = [enumerator nextObject]) )

    {

        NSLog(@"view - %@, %@", [subview description], (subview.hidden ? @"YES": @"NO"));

    }

}