Ich kann nicht wirklich mit NSAssert sprechen, aber ich stelle mir vor, dass es ähnlich wie Cs assert () funktioniert.
assert () wird verwendet, um einen semantischen Vertrag in Ihrem Code durchzusetzen. Was heißt das, fragst du?
Nun, es ist wie Sie gesagt haben: Wenn Sie eine Funktion haben, die niemals eine -1 erhalten sollte, können Sie assert () dies erzwingen lassen:
void gimme_positive_ints (int i) {
behaupten (i> 0);
}}
Und jetzt sehen Sie so etwas im Fehlerprotokoll (oder STDERR):
Behauptung i> 0 fehlgeschlagen: Datei example.c, Zeile 2
Es schützt also nicht nur vor potenziell schlechten Eingaben, sondern protokolliert sie auch auf nützliche und standardmäßige Weise.
Oh, und zumindest in C war assert () ein Makro, sodass Sie assert () in Ihrem Release-Code als No-Op neu definieren konnten. Ich weiß nicht, ob dies bei NSAssert der Fall ist (oder sogar mehr behauptet ()), aber es war ziemlich nützlich, diese Prüfungen zu kompilieren.