Подтвердить что ты не робот

Разница между NSLog и DLog

Может ли кто-нибудь сказать мне, какая разница между NSLog и DLog?

Я узнал об этом DLog, когда я просматривал этот код проекта: http://code.google.com/p/iphone-socks-proxy/

4b9b3361

Ответ 1

NSLog - это функция, встроенная в инфраструктуру Foundation, которую предоставляет Apple. Я никогда не слышал о DLog, поэтому я предполагаю, что это нестандартная функция, реализованная кодом, который вы ищете.

Ответ 2

DLog - это обычно используемая альтернатива "Debug NSLog" (просто Google для нее)

Вот полный набор директив Log #define (включая ULog, UIAlertView).

// DLog will output like NSLog only when the DEBUG variable is set

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

// ALog will always output like NSLog

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

// ULog will show the UIAlertView only when the DEBUG variable is set 

#ifdef DEBUG
#   define ULog(fmt, ...)  { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
#else
#   define ULog(...)
#endif

Просто поместите их в файл заголовка precompile (.pch).

(источник: http://overbythere.co.uk/blog/2012/01/alternatives-nslog)

Ответ 3

DLog - это макрос, предназначенный для условного поведения NSLog() в отладочных и релизных сборках. Для релизов он ничего не печатает. NSLog() предназначен для печати строк формата на консоли.

Вот его определение для ссылки:

#ifdef DEBUG
#    define DLog(...) NSLog(__VA_ARGS__)
#else
#    define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)

Ответ 4

Привет, Ниже макроса cmd для формата файла NSLOG для замещения, а также ниже, упомянутого как undef Macro, а также

Определение:

#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_
#ifdef _LOG_TO_CONSOLE_
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DLog(format, ...)
#endif

Ответ 5

Я думаю, что важное различие между NSLog и DLOG что NSLog отстает от выполнения программы (представьте себе, забыв удалить все NSLog заезжает производства/публикации), поэтому для целей отладки DLOG следует использовать.