Ich mache eine App, die sensible Kreditkartendaten verarbeitet.
Wenn mein Code im Debug-Modus ausgeführt wird, möchte ich diese Daten in der Konsole protokollieren und einige Datei-Dumps erstellen.
Bei der endgültigen Appstore-Version (dh wenn sie im Release-Modus ausgeführt wird) ist es jedoch wichtig, dass all dies deaktiviert ist (Sicherheitsrisiko)!
Ich werde versuchen, meine Frage so gut wie möglich zu beantworten. Die Frage lautet also: Ist dieser Lösungsweg der richtige oder beste Weg, dies zu tun?
// 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
, funktioniert das nicht. Wie kann ich eine Schaltfläche initialisieren oder etwas in der Konsole protokollieren? Können Sie Ihre Frage bearbeiten?Eine Lösung in Swift finden Sie in diesem Thread zu SO.
Grundsätzlich würde die Lösung in Swift folgendermaßen aussehen:
Zusätzlich müssen Sie das
DEBUG
Symbol imSwift Compiler - Custom Flags
Abschnitt für denOther Swift Flags
Schlüssel über einen-D DEBUG
Eintrag festlegen . Ein Beispiel finden Sie im folgenden Screenshot:quelle
Other Swift Flags
Schlüssel erst angezeigt wird, wenn SieAll
undcombined
höher auswählenApple enthält bereits ein
DEBUG
Flag in Debug-Builds, sodass Sie kein eigenes definieren müssen.Möglicherweise möchten Sie auch in Betracht ziehen, nur
NSLog
eine Nulloperation neu zu definieren , wenn Sie sich nicht imDEBUG
Modus befinden. Auf diese Weise ist Ihr Code portabler und Sie können einfach reguläreNSLog
Anweisungen verwenden:quelle
Die meisten Antworten besagten, wie #ifdef DEBUG gesetzt werden soll, und keiner von ihnen sagte, wie man den Debug- / Release-Build bestimmt.
Meine Meinung:
Schema bearbeiten -> ausführen -> Konfiguration erstellen: Debug / Release auswählen. Es kann den Simulator und den Codestatus Ihres Test-iPhones steuern.
Schema bearbeiten -> Archiv -> Konfiguration erstellen: Debug / Release wählen. Es kann die Testpaket-App und den Codestatus der App Store-App steuern.
quelle
Archive
Modus beibehaltenDebug
und die App an den App Store gesendet. Wenn Sie das Ergebnis nach dem Herunterladen der App aus iTunes überprüfen, funktioniert es einfach nicht. Stellen Sie also sicher, dass diesDEBUG/RELEASE
nur funktioniert, wenn der entsprechende Modus ausgewählt istBuild/Run/Archive
.Swift und Xcode 10+
#if DEBUG
wird in JEDER Entwicklung / Ad-hoc-Erstellung, jedem Gerät oder Simulator übergeben. Es ist nur für App Store- und TestFlight-Builds falsch.Beispiel:
quelle
Die Antwort von zitao xiong kommt meiner Verwendung ziemlich nahe. Ich füge auch den Dateinamen hinzu (indem ich den Pfad von FILE entferne ).
quelle
In xcode 7 gibt es unter Apple LLVM 7.0 - Vorverarbeitung ein Feld mit dem Namen " Präprozessormakros , die in vorkompilierten Dateien nicht verwendet werden ... "? Ich habe DEBUG vor Debug gestellt und es funktioniert für mich unter Verwendung des folgenden Codes:
quelle
Nur noch eine Idee zu entdecken:
DebugMode.h
DebugMode.m
In die Header-Bridge-Datei einfügen:
#include "DebugMode.h"
Verwendung:
DebugMode.isDebug()
Es ist nicht erforderlich, etwas in die schnellen Flags der Projekteigenschaften zu schreiben.
quelle
Ich bin mir nicht sicher, ob ich Ihre Frage beantwortet habe. Vielleicht könnten Sie diesen Code ausprobieren:
quelle