2011-09-18 20 views

risposta

10

Sì. Quindi lo definisco nel mio file pch.

#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__); 

Invece di utilizzare NSLog, utilizzo DLog e ALog.

(Nota o diritti d'autore:. Ho ottenuto questo codice molto tempo fa da alcuni post altro SO che non mi ricordo incollare di nuovo dalla mia biblioteca frammento)

+0

Sì, per NSLogs si prevede di lasciare il codice per il debug, è necessario definire le macro che permettono il "debug" quelli da compilare fuori. Alcuni, ovviamente, dovrebbero sempre essere registrati, quindi quelli usano una macro diversa. L'aggiunta di '__PRETTY_FUNCTION__' e' __LINE__' riduce la necessità di identificare esplicitamente dove ti trovi nel codice. (Non c'è nulla di più inutile di un messaggio "Ho avuto un errore" senza alcun indizio su dove è stato inviato.) –

+0

Questa sembra essere l'origine di questa idea, per coloro che sono curiosi di conoscere la sua evoluzione: http: //iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog – benvolioT

2

Sì, rallenta le prestazioni, soprattutto se si suppone che la funzione impieghi molto poco tempo, il NSLog (che è un processo I/O) richiederà più tempo del previsto.

7

Un'altra soluzione facile a 'undefine' NSLog

nel file di PCH:

#ifndef DEBUG 
#define NSLog(...) /* */ 
#endif 
Problemi correlati