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

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

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


person slonkar    schedule 11.03.2012    source источник
comment
Что такое DLog из любопытства?   -  person Peter Kelly    schedule 12.03.2012
comment
google.com/search?q=DLog+vs+NSLog 989 000 Результаты.   -  person CodaFi    schedule 12.03.2012
comment
Эволюция замены для NSLog   -  person vikingosegundo    schedule 12.03.2012
comment
@CodaFi, и это лучший хит.   -  person Tadhg McDonald-Jensen    schedule 16.10.2018


Ответы (5)


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

person Kurt Revis    schedule 11.03.2012
comment
DLog означает «Журнал отладки» (я предполагаю) и обычно представляет собой макрос, который ничего не оценивает, если флажок среды DEBUG выключен - в основном в приложениях для доставки. - person Itai Ferber; 12.03.2012
comment
@Kurt: Даже я думал, что это в первую очередь, но я не смог ничего найти в этом проекте. И вот ссылка на проект, на которую я смотрю: code.google.com/p / iphone-socks-proxy - person slonkar; 12.03.2012
comment
Он определен в SocksProxy_Prefix.pch. . - person Kurt Revis; 12.03.2012

DLog - это широко используемая альтернатива "Отладка 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)

person Pascal    schedule 12.09.2012

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

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

#ifdef DEBUG
#    define DLog(...) NSLog(__VA_ARGS__)
#else
#    define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
person CodaFi    schedule 11.03.2012
comment
Это не правда. NSLog не предназначен для вывода строковых литералов на консоль - для этого вы можете использовать printf (или fputs) и друзей, если хотите. Задача NSLog - выводить полезную и достоверную информацию в системный журнал. - person Itai Ferber; 12.03.2012

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

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

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

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

person Nora Madjarova    schedule 30.03.2016