Ich habe mehrere assert(condition, "message")
Aussagen in meinem Projekt.Asserts sind in der Produktion getroffen treffen verursacht Abstürze
Sie werden verwendet, um invariante Bedingungen während der Entwicklung zu überprüfen. Ich dachte, sie würden in Produktion/Release-Build ignoriert werden (wie in this answer angegeben). Sie sind nicht. Stattdessen verursachen sie Abstürze während TestFlight Tests. Wenn ich einen Kommentar mache, stürzt die App nicht ab. Etwas läuft normalerweise ein bisschen falsch, aber es stürzt nicht ab.
Kann es etwas mit meinen Build-Einstellungen sein?
Alle meine Archivschemata verwenden Release-Konfiguration:
Das sind in Cocoa Touch Framework-Projekt behauptet, dass von benutzerdefinierten Tastaturerweiterung verwendet wird.
alle Ziele in allen Projekten (Cocoa Touch Framework und das Hauptprojekt mit Zieltastaturerweiterung) haben diese Einstellungen Körperbau:
Enable Foundation Assertions
Debug YES
Release NO
Disable Safety Checks NO
Was ist los?
EDIT:
Sulthan's answer zeigt, wie für beide Debug behauptet global deaktivieren und Relase baut. Das ist nicht was ich brauche. Ich möchte, dass es wie erwartet funktioniert - Behauptungen sollten in Debug aktiviert sein, aber in Release-Builds deaktiviert sein.
Standardmäßig funktioniert es so - und so funktioniert es auch in meinem Hauptprojekt. Aber es funktioniert nicht für Asserts, die sich im Framework-Projekt befinden, das von diesem Hauptprojekt aus verlinkt ist (Details in this question). Warum? Wie man es repariert?
Haben Sie versucht, meine [Antwort] (http://stackoverflow.com/a/24038197/669586)? – Sulthan
@Sultan Nein, tat ich nicht. Ich dachte, dass es nicht erforderlich sein sollte, benutzerdefinierte Flags hinzuzufügen, um sicherzustellen, dass es in Releases ignoriert. Ich werde es jetzt versuchen. – drasto
Ich denke auch, dass es nicht erforderlich sein sollte (es war in einer der ersten Beta-Versionen erforderlich). – Sulthan