Може ли някой да ми каже каква е разликата между NSLog
и DLog
?
Намерих за този DLog, когато разглеждах този код на проекта: http://code.google.com/p/iphone-socks-proxy/
Може ли някой да ми каже каква е разликата между NSLog
и DLog
?
Намерих за този DLog, когато разглеждах този код на проекта: http://code.google.com/p/iphone-socks-proxy/
NSLog
е функция, която е вградена в рамката Foundation, предоставена от Apple. Никога не съм чувал за DLog
, така че предполагам, че това е нестандартна функция, която се изпълнява от кода, който разглеждате.
DLog
означава „Дневник за отстраняване на грешки“ (предполагам) и обикновено е макрос, който не дава нищо, ако флагът за среда DEBUG
е изключен - най-вече в приложения за доставка.
- person Itai Ferber; 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 а>)
DLog е макрос, предназначен да обуслови поведението на NSLog()
при компилации за отстраняване на грешки и освобождаване. За версии на версията няма да отпечата нищо. NSLog()
е предназначен да отпечатва форматиращи низове в конзолата.
Ето неговата дефиниция за справка:
#ifdef DEBUG
# define DLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
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
Мисля, че важна разлика между NSLog и DLog е, че NSLog забавя изпълнението на програмата (представете си, че сте забравили да премахнете всички NSLog извиквания при производство/публикуване), така че за целите на отстраняване на грешки трябва да се използва DLog.