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

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

22 голосов
/ 12 марта 2012

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

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

Ответы [ 5 ]

68 голосов
/ 12 сентября 2012

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

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

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

13 голосов
/ 12 марта 2012

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

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

#ifdef DEBUG
#    define DLog(...) NSLog(__VA_ARGS__)
#else
#    define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
9 голосов
/ 12 марта 2012

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

8 голосов
/ 21 июня 2014

Привет, ниже макрос 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
0 голосов
/ 30 марта 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...