Разлика между 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 е често използвана алтернатива на „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)

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 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
person sathish    schedule 21.06.2014

Мисля, че важна разлика между NSLog и DLog е, че NSLog забавя изпълнението на програмата (представете си, че сте забравили да премахнете всички NSLog извиквания при производство/публикуване), така че за целите на отстраняване на грешки трябва да се използва DLog.

person Nora Madjarova    schedule 30.03.2016