Come programmatore più recente, ho scoperto la magia di NSlog
e l'ho usato tutto attraverso il mio codice. È stato estremamente utile (insieme a NSZombieEnabled
) nel debug.C'è un costo per usare liberamente NSLog?
Vedo un risultato preciso sul simulatore mentre stampa tutto questo. Non penso di vedere alcun risultato simile sui dispositivi, ma non ne sono sicuro.
Quindi non costa nulla lasciare lo NSLogs
? Sta usando più memoria sul dispositivo? O il compilatore li ignora, come fa i commenti quando compilo per un dispositivo?
EDIT:
Ecco quello che ho implementato, secondo il suggerimento di rano.
Nel mio file App_Prefix.pch
, ho aggiunto:
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
E poi nel mio Project Info
ispettore, per la configurazione Debug
, sotto la voce GCC 4.2 - Preprocessing,
ho aggiunto il valore DEBUG
alla voce in alto chiamata, Preprocessor Macros.
Funziona come un incantesimo - DLog
uscite quando si genera una versione Debug
e sempre uscite.
Vedere anche [È vero che non si dovrebbe utilizzare NSLog() sul codice di produzione?] (Http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use -nslog-on-production-code) –