In Swift, we have normal default typing
we have weak typing
The bold sentences are not true.
Weak
is optional and can be set at any time.
Unowned
is non-optional but can be nil. If that happens and you call it your app crashs. It has to be set during initialization.
Another difference is performance, as the author stated. Unowned
does not do any checks and is slighty faster than weak
.
It better shows the relationship between classes.
You can check out this SO question for further details: What is the difference between a weak reference and an unowned reference?