| function | debug | release | release |
|---|---|---|---|
| Optimization Level | -Onone |
-O |
-Ounchecked |
assert() |
YES | NO | NO |
assertionFailure() |
YES | NO | NO** |
precondition() |
YES | YES | NO |
preconditionFailure() |
YES | YES | YES** |
fatalError()* |
YES | YES | YES |
| Value | Meaning |
|---|---|
| YES | Terminates |
| NO | Does not terminate |
* Not really an assertion. It’s designed to terminate code execution always, no matter what.
** The optimizer may assume that this function will never be called.
Sources: