Tworzę aplikację, która przetwarza wrażliwe dane karty kredytowej.
Jeśli mój kod działa w trybie debugowania, chcę zalogować te dane do konsoli i wykonać zrzuty plików.
Jednak w ostatecznej wersji sklepu (tj. Gdy działa w trybie wydania) ważne jest, aby wszystko to było wyłączone (zagrożenie bezpieczeństwa)!
Postaram się odpowiedzieć na moje pytanie najlepiej jak potrafię; więc pytanie brzmi: „Czy ta ścieżka rozwiązania jest właściwym, czy najlepszym sposobem na to?”
// 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
to nie działa. Jak mogę zainicjować przycisk lub zalogować coś do konsoli, czy możesz edytować swoje pytanie?Aby znaleźć rozwiązanie w Swift, zapoznaj się z tym wątkiem w SO.
Zasadniczo rozwiązanie w Swift wyglądałoby tak:
Dodatkowo będziesz musiał ustawić
DEBUG
symbol wSwift Compiler - Custom Flags
sekcji dlaOther Swift Flags
klucza poprzez-D DEBUG
wpis. Przykładowy zrzut ekranu:źródło
Other Swift Flags
klucz się nie pojawi, chyba że wybierzeszAll
icombined
powyżejApple już zawiera
DEBUG
flagę w kompilacjach debugowania, więc nie musisz definiować własnej.Możesz również rozważyć redefiniowanie
NSLog
operacji zerowej, gdy nie jest wDEBUG
trybie, w ten sposób twój kod będzie bardziej przenośny i możesz po prostu używać zwykłychNSLog
instrukcji:źródło
Większość odpowiedzi mówiło, jak ustawić #ifdef DEBUG, a żadna z nich nie mówi, jak określić kompilację debugowania / wydania.
Moja opinia:
Edytuj schemat -> uruchom -> konfiguracja kompilacji: wybierz debugowanie / wydanie. Może kontrolować symulator i status testowego kodu iPhone'a.
Edytuj schemat -> archiwum -> konfiguracja kompilacji: wybierz debugowanie / wydanie. Może kontrolować aplikację pakietu testowego i status kodu aplikacji App Store.
źródło
Archive
trybDebug
i przesłałem aplikację do sklepu z aplikacjami. Podczas sprawdzania wyniku po pobraniu aplikacji z iTunes po prostu nie działa. Upewnij się więc, żeDEBUG/RELEASE
działa tylko po wybraniu odpowiedniego trybu wBuild/Run/Archive
.Swift i Xcode 10+
#if DEBUG
przekaże DOWOLNĄ wersję rozwojową / kompilację ad-hoc, urządzenie lub symulator. Jest to fałsz tylko w przypadku wersji App Store i TestFlight.Przykład:
źródło
Odpowiedź zitao xionga jest bardzo zbliżona do tego, czego używam; Podaję także nazwę pliku (usuwając ścieżkę z PLIKU ).
źródło
W xcode 7 pod Apple LLVM 7.0 znajduje się pole - przetwarzanie wstępne , które nazywało się „ Makrami preprocesorów nieużywanych we wstępnie skompilowanych ... ”? Umieszczam DEBUG przed Debugowaniem i działa dla mnie, używając poniższego kodu:
źródło
Jeszcze jeden pomysł na wykrycie:
DebugMode.h
DebugMode.m
dodaj do pliku mostka nagłówka:
#include "DebugMode.h"
stosowanie:
DebugMode.isDebug()
Szybkie pisanie we właściwościach projektu nie jest potrzebne.
źródło
Nie jestem pewien, czy odpowiedziałem na pytanie, może mógłbyś wypróbować następujący kod:
źródło