2011-03-31 2 views
2

J'ai essayé de désactiver NSLog dans la version finale.#define NSLog (...) affiche toujours la sortie d'impression sur la console

je mets le code suivant dans le fichier .pch

#ifndef __OPTIMIZE__
#define NSLog (...) NSLog (__ VA_ARGS__)
#else
#define NSLog (...) {}
#endif

Il ne fonctionne pas, alors j'ai essayé

#define NSLog (...) {}

Il imprime encore sur la console.

Toute aide sera bonne, merci!

+0

Vous devriez probablement activer 'NDEBUG', et non' __OPTIMIZE__'. – jww

Répondre

0

Assurez-vous __OPTIMIZE__ est défini dans les paramètres de construction ou plus haut dans le fichier .pch lui-même et que le fichier pch est défini dans l'en-tête Prefix (GCC_PREFIX_HEADER) paramètres de construction. En outre, vous pouvez définir NSLog (...) rien

#define NSLog(...)

+0

Probablement pas mieux de le définir comme rien - cela peut provoquer des effets secondaires inattendus dans le code, par exemple, une instruction if avec un seul NSLog suivant et pas de parenthèses ... – fbrereto

+0

Bon point je l'ai supprimé – Joe

+1

Bien que je dise bon point je viens réalisé que vous avez toujours besoin d'un point-virgule après le NSLog donc 'for (int i = 0; i <10; i ++);' est valide. Où il pourrait causer un problème utilise une virgule dans le code. 'int i; i = 10, NSLog (" i% d ", i);' – Joe

1

vous déclarer votre propre fonction de journal et utiliser à la place. sa mise en œuvre pourrait passer par NSLogv, si vous voulez une liste va. sa mise en œuvre ne transmettra pas non plus les messages à NSLogv lorsqu'il est désactivé, vous aurez donc probablement besoin de plus d'une saveur de logger.

1

Cela ressemble à ce que vous voulez est similaire à cette définition pour DLog de this previous SO answer on NSLog tips and tricks.

#ifdef DEBUG 
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
#else 
# define DLog(...) 
#endif 
0

préprocesseur set macro Build Réglage du projet ayant: debug = 1 $ (hérité)

Alors maintenant, il suffit d'utiliser: if (DEBUG) NSLog (@ "Votre journal");

0

Dans votre application fichier .pch mis ligne suivante. define NSLog (dese, ...)

Il arrête l'impression.

Questions connexes