Ich bin gerade dabei, meine erste iPhone App einzureichen.
Ich habe viele NSLog-Anweisungen geschrieben, um die Anwendung zu testen und zu debuggen.
Meine Frage ist also "Ist es in Ordnung, die NSLog-Anweisungen im Quellcode zu behalten"
und ich habe Zweifel, ob die nslog-Anweisungen die gesamte Ausführungszeit verlangsamen oder nicht.
danke.
Ich habe es die ganze Zeit benutzt (irgendwo gefunden):
%Vor%Das three20-Projekt von Facebook bietet eine komplexere Möglichkeit zum Debuggen oder Loggen.
Eine App, an der ich gerade gearbeitet habe, hatte viele NSLogs, die debugged auf die Konsole luden. Wir haben festgestellt, dass sie die Leistung auf dem iPhone 3G drastisch beeinträchtigt haben. Der Performance-Hit war auf einem 3GS bemerkbar, aber nicht so sehr.
Mein Rat wäre, ein Präprozessor-Makro und eine Debug-Präprozessor-Definition zu verwenden, um NSLogs in Debug-Builds, aber nicht in Release-Builds bedingt zu verwenden.
Ich habe meine nie losgeworden:)
Manche Leute empfehlen bedingte Kompilierungs- / Compiler-Makros, damit Sie ohne NSLog einen Build erstellen können, aber ich denke, das ist zu viel Aufwand für sehr wenig Belohnung.
Allerdings verlangsamen NSLogs die App (leicht), damit ich alle entfernen kann, die sich direkt auf die Leistung auswirken. Möglicherweise möchten Sie auch einige Debugging-Protokollinformationen entfernen, um zu verbergen, wie Sie Ihre App implementiert haben usw.
Ich hoffe, das ist hilfreich,
Sam
XCode4 bietet hierfür eine ziemlich saubere Lösung - verwenden Sie Breakpoints. Wählen Sie die Aktion 'Eine Nachricht protokollieren' und legen Sie val = @val @ als Nachricht fest. Aktivieren Sie dann das Kontrollkästchen "Automatisch nach der Auswertung der Aktionen fortfahren".
Passt nicht zu jedem Anwendungsfall, aber Sie profitieren von einer einfachen "Inspektion" von Werten und Garantien werden sie es nicht zu einer Veröffentlichung machen.
Ich verwende einfach einen "useDebugMode" -Singleton-Int, der auf 0 oder 1 gesetzt ist und in userPrefs (plist) gespeichert ist. Und, abhängig von der UUID des iPhones, füge ich einen "Benutze Debug Modus: ein / aus" Schalter zum Einstellungsbildschirm hinzu, so dass ich Probleme in der Zukunft mit Produktionsversionen debuggen kann. Dies ermöglicht mir das Debuggen von Datenproblemen (mit heruntergeladenem XML), wenn sich Benutzer über Probleme mit dem Programm in der Zukunft beschweren. Ich wickle dann alle "NSLog" s und "printf" s in
%Vor%Das funktioniert für mich ... Natürlich, das:
%Vor%verursacht einige Gemeinkosten, mit denen ich mich befassen möchte.
Es ist kein Problem, NSLog in Release zu verwenden. Aber wenn Sie wertvolle Daten in das Protokoll schreiben, können andere Benutzer (Entwickler) diese Daten sehen. Wie ein Download Link etc ..