En tant que programmeur plus récent, j'ai découvert la magie de NSlog
, et l'utilise tout au long de mon code. Il a été extrêmement utile (avec NSZombieEnabled
) dans le débogage.L'utilisation de NSLog coûte-t-elle cher?
Je peux voir un coup de performance certain sur le simulateur alors qu'il imprime tout cela. Je ne pense pas voir un tel coup sur les appareils, mais je ne suis pas sûr.
Alors est-ce que ça coûte quelque chose de laisser tout le NSLogs
dedans? Utilise-t-il plus de mémoire sur l'appareil? Ou est-ce que le compilateur les ignore simplement, comme il fait des commentaires quand je compile pour un périphérique?
EDIT:
Voici ce que je mis en œuvre, par la suggestion de rano.
Dans mon dossier App_Prefix.pch
, j'ajouté:
// 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__);
Et puis dans mon inspecteur Project Info
, pour la configuration Debug
, sous la rubrique GCC 4.2 - Preprocessing,
J'ai ajouté la valeur DEBUG
à l'entrée supérieure appelée, Preprocessor Macros.
Fonctionne comme un charme - DLog
sorties lorsque je construis une version Debug
et ALog
sorties toujours.
Voir aussi [Est-il vrai qu'il ne faut pas utiliser NSLog() sur le code de production?] (Http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use -nslog-on-production-code) –