Désactiver les NSLog en release
Le NSLog est l’outil de base dans le développement et le déboguage d’application Cocoa (donc Cocoa Touch). Seulement, l’utilisation de NSLog n’est pas si anodine qu’elle peut paraître … Le fait d’envoyer une chaine de caractère à la sortie console consomme des ressources.
Certes, c’est peu de choses, mais quand un NSLog est inclus dans une boucle, se déclenche à chaque touchesMoved: (par exemple), il commence à ralentir très sérieusement le fonctionnement de l’application. Sans compter qu’une fois l’application distribuée, il est possible pour l’utilisateur final de lire ce qui se trouve dans les logs … Ce qui n’est pas forcement voulu pour le développeur.
L’idée serait donc, quand on est en configuration de compilation « release », de désactiver (automatiquement les NSLog). Pour ce faire, on va simplement ajouter le code suivant dans leNomDeLApplication_Prefix.pch (il s’agit simplement d’un fichier qui est inclus dans tous les fichiers d’un projet):
#ifndef DEBUG
#define NSLog //
#endif
Le code veut simplement dire: Si DEBUG n’est pas activé, on remplace les NSLog par des commentaires. On pensera donc à ajouter un flag DEBUG dans GCC_PREPROCESSOR_DEFINITIONS de la configuration de compilation dans le mode Debug. Notez que, par défaut, GCC_PREPROCESSOR_DEFINITIONS n’existe pas, il faudra donc le créer à la main.
Voilà, c’est fini
. Notez tout de même que cette façon de faire a une limitation: il faut que les NSLog soient définis sur une seule ligne. Mais bon, ça l’est dans 99% des cas !

