Qual é o sentido do NSAssert, na verdade?

Eu tenho que perguntar isso porque: A única coisa que reconheço é que, se a afirmação falhar, o aplicativo trava. É por isso que usar o NSAssert? Ou qual é o benefício disso? E é correto colocar um NSAssert acima de qualquer suposição que eu faça no código, como uma função que nunca deve receber um...