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 !

