DEBUG 모드에서 NSLog 활성화 및 비활성화
디버그 중일 때 NSLog를 활성화하고 그렇지 않으면 비활성화하고 싶습니다. 아주 간단한 것은 :
#ifdef DEBUG
NSLog(@"My log");
#endif
그러나 모든이 #ifdef
와 #endif
나는 다른 것을 시도 borring입니다 ... :( 그래서 : (넣어 좋은 장소입니다 .PCH를)
#ifdef DEBUG
# define NSLog(text) NSLog(text);
#else
# define NSLog(text)
#endif
이것은 매우 잘 작동합니다 (재귀 적이 지 않음). 그러나 문제는 NSLog에 무한한 인수가 있다는 것입니다.
void NSLog(NSString *format, ...)
전 처리기 모드에서 작동하도록이 문제를 어떻게 해결합니까?
-- 편집하다 --
이 코드는 NSLog를 향상시킵니다.
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
이것은 트릭을 수행해야합니다.
#ifdef DEBUG
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...) (void)0
#endif
이것은 조금 더 짧으며 장치를 사용할 때 NSLog를 비활성화합니다. 게임을 작성하는 경우 NSLogs를 자주 보내면 FPS를 60에서 20으로 줄일 수 있습니다.
#if !defined(DEBUG) || !(TARGET_IPHONE_SIMULATOR)
#define NSLog(...)
#endif
위의 모든 답변이 정확합니다. 다음과 같은 방법으로도 제안 할 수 있습니다. 대괄호가없는 if 문이 있다고 가정합니다.
if(x==5)
NSLog("x is 5");
NSLog를 문없이 대체하면 어떻게 될까요? 따라서 간단히 빈 루프로 바꿀 수 있습니다.
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...) do {} while (0)
#endif
이 문은 빈 루프를 한 번 실행합니다. 이렇게하면 모든 라이브 코드에서 NSLog가 안전하게 제거됩니다.
#ifndef Debug
#define Debug 1
#endif
#if Debug
# define DebugLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DebugLog(...)
#endif
로그를 활성화하려면 Debug를 1로 설정하고 비활성화하려면 0으로 설정합니다.
여기에 좋은 트릭이 있습니다 ...
#define EXTRANSLog if([[NSUserDefaults standardUserDefaults] boolForKey:@"SomeFancyKey"] == YES) NSLog
교체
NSLog(@"????");
와
EXTRANSLog(@"????");
이 예제에서는 NSUser 키를 생성하고 BOOL을 YES로 설정하고, 스위치 등을 사용하여 키를 NO로 변경하거나 콘솔 디버거를 통해 EXTRANSLog를보고 싶지 않은 경우 모두 제거합니다.
문제를 해결할 때 이것을 사용하고 과도한 로그가 모두 표시되는 것을 원하지 않습니다. SomeFancyKey == YES 인 경우에만.
이것은
#define NSLog if(1) NSLog
여기서 1은 예이며 NSLog를 표시하고 0은 아니오입니다.
참조 URL : https://stackoverflow.com/questions/6552197/enable-and-disable-nslog-in-debug-mode
'UFO ET IT' 카테고리의 다른 글
DataView에서 행 반복 (0) | 2021.01.10 |
---|---|
DataTable의 열만 다른 DataTable에 복사하는 방법은 무엇입니까? (0) | 2021.01.10 |
MySQL 여러 행을 반환하는 SELECT 하위 쿼리를 사용하여 테이블에 어떻게 INSERT합니까? (0) | 2021.01.10 |
Google Play의 다운로드 수 (0) | 2021.01.10 |
임시 폴더에 파일 쓰기 (0) | 2021.01.10 |