2013-04-14 18 views

Odpowiedz

10

Xcode ma wstępnie skompilowany plik nagłówkowy ({project-name}-Prefix.pch w grupie Supporting Files domyślnie), który jest doskonałym miejscem do umieszczenia kodu, który będzie używany dla każdego pliku w projekcie. Aby przejść o krok dalej i poprawić samą wiadomość dziennika, zobacz Is it true that one should not use NSLog() on production code?.

2

Co mogę zrobić, to umieścić to w skompilowanym pliku nagłówka (YourAppName.pch):

#define MyLog if(0); else NSLog 

Potem zmienić wszystko NSLog do MyLog wszędzie indziej w aplikacji. Działa tak, jakby był NSLog. Ale jeśli chcesz wyłączyć NSLog, wróć do pliku .pch i zmień 0 na i presto, wszystkie rejestrowanie zatrzymuje się.

+2

Jest to niebezpieczne, ponieważ zmienia wiązanie każdego kolejnego 'else'. To znaczy. 'if (someCondition) MyLog (bla); else doSomething(); 'nie oznacza tego, co się wydaje. –

+0

@KenThomases Nie patrz na mnie, dostałem to od Jensa Alfke! Nie mam jeszcze żadnych problemów, ale jestem pewien, że twoje ostrzeżenie jest dobre. – matt

0

Wystarczy dodać następujące wiersze podczas wykonywania ' "t potrzeba NSLog do stałych plik

#define NSLog      // 

i komentować je, gdy jest to potrzebne

5

Dodaj poniższe linie do swoich stałych plik.

#define DEBUGGING NO //or YES 
#define NSLog if(DEBUGGING)NSLog 

następujące dwa zdania dają takie same wyniki

#define NSLog 

i

#define NSLog // 

ponieważ cały tekst, które zaczynają się // są usuwane w fazie prekompilacja („//” w zestawie)

+0

Twoja sugestia // jest niebezpieczna, ponieważ możesz rozłożyć NSLog na wiele linii. twoja instrukcja if również wygląda na niestabilną ... możesz użyć zakresu i parametrów dla makra NSLog, aby było lepiej ... – jheriko

2

Będzie to również dbać o ostrzeżeniach, które pojawiają się podczas korzystania

#define NSLog // 

Kod:

#ifndef DEBUG 
    #define NSLog(...) 
#endif 
Powiązane problemy