Realmente no puedo hablar con NSAssert, pero imagino que funciona de manera similar a la afirmación de C ().
afirmar () se utiliza para hacer cumplir un contrato semántico en su código. ¿Qué significa eso, preguntas?
Bueno, es como dijiste: si tienes una función que nunca debería recibir un -1, puedes hacer valer aserción ():
nulo gimme_positive_ints (int i) {
afirmar (i> 0);
}
Y ahora verá algo como esto en el registro de errores (o STDERR):
Afirmación i> 0 fallida: archivo ejemplo.c, línea 2
Por lo tanto, no solo protege contra entradas potencialmente malas, sino que las registra de una manera útil y estándar.
Ah, y al menos en C afirmar () era una macro, por lo que podría redefinir afirmar () como no operativo en su código de lanzamiento. No sé si ese es el caso con NSAssert (o incluso afirmar () más), pero fue bastante útil compilar esos controles.