Я не можу реально розмовляти з NSAssert, але думаю, що це працює аналогічно твердженню C ().
assert () використовується для забезпечення семантичного контракту у вашому коді. Що це означає, запитаєте ви?
Ну, це як ви сказали: якщо у вас є функція, яка ніколи не повинна отримувати -1, ви можете стверджувати () примусово виконувати таке:
void gimme_positive_ints (int i) {
стверджувати (i> 0);
}
А тепер ви побачите щось подібне в журналі помилок (або STDERR):
Твердження i> 0 не вдалося: файл example.c, рядок 2
Таким чином, він не тільки захищає від потенційно поганих входів, але й записує їх корисним, стандартним способом.
О, і, принаймні, у C assert () був макросом, тому ви можете переосмислити assert () як неоперативний код у своєму випуску. Я не знаю, чи так це з NSAssert (або навіть затверджувати () більше), але це було дуже корисно для складання цих чеків.