Activer et Désactiver NSLog en mode DEBUG

Je veux l'activer NSLog quand je suis en debug et désactiver le contraire. Une chose très simple est:

#ifdef DEBUG
NSLog(@"My log");
#endif

Mais tout cela #ifdef et #endif est borring... 🙁 j'ai Donc essayer autre chose: (.pch est le bon endroit pour le mettre)

#ifdef DEBUG
#   define NSLog(text) NSLog(text);
#else 
#   define NSLog(text) 
#endif

Ce travail très fin (n'est pas récursif). Mais le problème est que NSLog ont infinie arguments.

void NSLog(NSString *format, ...)

Comment je résoudre ce de travailler dans de préprocesseur mode?

-- Edit --

Ce code de rendre votre NSLog mieux:

#ifdef DEBUG
    #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
    #define NSLog(...)
#endif
  • +1 pour la Question Sympa. Complet d'un composant réutilisable sur ce sujet, au mobile.tutsplus.com/tutorials/iphone/...
  • J'ai suivi le guide dans le lien. Mais j'ai eu l'erreur de compilation suivante: les symboles non définis pour l'architecture x86_64: ld: symbole(s) ne se trouvent pas pour l'architecture x86_64 clang: erreur: échec de la commande de l'éditeur de liens avec le code de sortie 1 (l'option-v pour voir invocation) s'il vous Plaît aider @MahbuburRAaman
  • Erreur les symboles non définis pour l'architecture x86_64: ld: symbole(s) ne se trouvent pas pour l'architecture x86_64 apparaît pour plusieurs raisons. Par exemple, pour la bibliothèque manquante ou dans d'autres cas, avoir un oeil à ce qui suit AFIN que les ressources stackoverflow.com/questions/18408531/..., stackoverflow.com/questions/11996227/... , stackoverflow.com/questions/6231368/....
  • Merci pour la réponse. J'ai trouvé la raison est que je vais appeler cette coutume NSLog méthode à partir d'un objectif de fichier c++.
  • S'il vous plaît, où ai-je placer ce code?
InformationsquelleAutor Rodrigo | 2011-07-01