Je crée une application qui traite les données sensibles des cartes de crédit.
Si mon code s'exécute en mode débogage, je veux enregistrer ces données sur la console et effectuer des vidages de fichiers.
Cependant, sur la version finale de l'appstore (c'est-à-dire lorsqu'elle fonctionne en mode release), il est essentiel que tout cela soit désactivé (risque de sécurité)!
Je vais essayer de répondre à ma question du mieux que je peux; la question devient donc: «Cette voie de solution est-elle la bonne ou la meilleure façon de le faire?
// add `IS_DEBUG=1` to your debug build preprocessor settings
#if( IS_DEBUG )
#define MYLog(args...) NSLog(args)
#else
#define MYLog(args...)
#endif
#ifdef DEBUG NSLog@("Something");#else//#endif
cela ne fonctionne pas. Comment puis-je initialiser un bouton ou enregistrer quelque chose sur la console, pouvez-vous modifier votre question?Pour une solution dans Swift, veuillez vous référer à ce fil sur SO.
Fondamentalement, la solution dans Swift ressemblerait à ceci:
De plus, vous devrez définir le
DEBUG
symbole dans laSwift Compiler - Custom Flags
section de laOther Swift Flags
clé via une-D DEBUG
entrée. Voir la capture d'écran suivante pour un exemple:la source
Other Swift Flags
clé n'apparaisse que si vous sélectionnezAll
etcombined
auApple inclut déjà un
DEBUG
indicateur dans les versions de débogage, vous n'avez donc pas besoin de définir la vôtre.Vous pouvez également envisager de redéfinir simplement
NSLog
une opération nulle lorsqu'il n'est pas enDEBUG
mode, de cette façon, votre code sera plus portable et vous pouvez simplement utiliser desNSLog
instructions régulières :la source
La plupart des réponses indiquaient comment définir #ifdef DEBUG et aucune d'entre elles ne disait comment déterminer la version de débogage / version.
Mon avis:
Modifier le schéma -> exécuter -> configurer la configuration: choisissez débogage / libération. Il peut contrôler le simulateur et l'état du code de votre iPhone de test.
Modifier le schéma -> archiver -> configurer la configuration: choisissez débogage / libération. Il peut contrôler l'application du package de test et l'état du code de l'application App Store.
la source
Archive
modeDebug
et soumis l'application à l'App Store. Lorsque vous vérifiez le résultat après le téléchargement de l'application depuis iTunes, cela ne fonctionne tout simplement pas. Assurez-vous donc que celaDEBUG/RELEASE
ne fonctionne que lorsque le mode respectif est sélectionné dansBuild/Run/Archive
.Swift et Xcode 10+
#if DEBUG
passera dans TOUT développement / build ad hoc, appareil ou simulateur. Ce n'est faux que pour les versions App Store et TestFlight.Exemple:
la source
la réponse de zitao xiong est assez proche de ce que j'utilise; J'inclus également le nom du fichier (en supprimant le chemin du FICHIER ).
la source
Dans xcode 7, il y a un champ sous Apple LLVM 7.0 - prétraitement , qui s'appelle " Macros de préprocesseurs non utilisées en précompilé ... "? J'ai mis DEBUG devant Debug et cela fonctionne pour moi en utilisant le code ci-dessous:
la source
Encore une idée à détecter:
DebugMode.h
DebugMode.m
ajouter dans le fichier de pont d'en-tête:
#include "DebugMode.h"
usage:
DebugMode.isDebug()
Il n'est pas nécessaire d'écrire quelque chose dans les drapeaux rapides des propriétés du projet.
la source
Je ne sais pas si je vous ai répondu à la question, peut-être pourriez-vous essayer ce code:
la source