Mise à jour pour Xcode 5 et iOS 7
note: pour une solution Xcode 7 / Swift 2.1 pour supprimer les instructions print () dans une version de version, trouvez ma réponse ici .
Oui, vous devez supprimer toute instruction NSLog dans votre code de version, car elle ralentit simplement votre code et n'est d'aucune utilité dans une version de publication. Heureusement, dans Xcode 5 (iOS 7), il est incroyablement simple de supprimer toutes vos instructions NSLog `` automatiquement '' dans les versions de version. Alors pourquoi ne pas le faire.
D'abord les 3 étapes à suivre, puis quelques explications
1) dans votre projet Xcode, localisez le fichier 'yourProjectName-prefix.pch' (normalement vous le trouverez sous le groupe 'support files', où se trouve votre fichier main.m
2) ajoutez ces 3 lignes à la fin du fichier '.pch':
#ifndef DEBUG
#define NSLog(...);
#endif
3) testez la différence entre votre version «debug» et «release». Une façon de le faire consiste à utiliser 'modifier le schéma' -> 'exécuter le nom de l'application' -> sous l'onglet 'info', sélectionnez en utilisant la liste déroulante entre le débogage et la publication. Dans la version finale, vous ne verrez aucune sortie NSLog dans la console de débogage!
Comment ça marche?
tout d'abord, il faut savoir qu'un préprocesseur est relativement «stupide», et agit simplement comme un «remplaçant de texte» avant que le compilateur ne soit appelé. Il remplace tout ce que vous '#define' par ce qui suit l' #define
instruction.
#define NSLog(...);
Le (...)
signifie «n'importe quoi» entre les crochets (). Attention aussi ;
à la fin. Ce n'est pas strictement nécessaire car le compilateur optimisera cela, mais j'aime le mettre là, car il est plus «correct». Après notre #define
il n'y a «rien», donc le préprocesseur le remplacera par «rien», et ainsi il jettera simplement la ligne complète, en commençant par NSLog...
jusqu'à et y compris le ;
.
Les instructions define peuvent être rendues conditionnelles en utilisant #ifdef
(si défini) ou #ifndef
(si non défini)
ici nous écrivons #ifndef DEBUG
, ce qui signifie «si le symbole DEBUG n'est pas défini». Le #ifdef
ou #ifndef
doit être `` fermé '' avec#endif
Xcode 5 définit par défaut le symbole 'DEBUG' pour nous lorsque le mode de construction est 'DEBUG'. Dans «release», cela n'est pas défini. vous pouvez le vérifier dans les paramètres de votre projet, onglet 'Paramètres de construction' -> faites défiler jusqu'à la section 'Apple LLVM 5.0 - Prétraitement' -> macros de préprocesseur. Vous verrez que le symbole «DEBUG» n'est pas défini pour les versions de version!
enfin, le fichier .pch est créé automatiquement par Xcode, et automatiquement inclus dans chaque fichier source pendant la compilation. C'est comme si vous aviez mis le tout #define
dans chacun de vos fichiers source.