Why do we do this?
Because all asserts must be completely removed in -releaseYet assert(0) effectively mean "unreachable code" (it is actually defined that way in spec) and thus it is possible to ensure extra "free" bit of safety by crashing the app.