In Swift Programming Language, it says:
“all of the basic types in Swift—integers, floating-point numbers, Booleans, strings, arrays and dictio
Array are special cases. They are value types with a special behavior.
At the page where you found the point 3) there are enough information to understand why:
The assignment and copy behavior for Swift’s Array type is more complex than for its Dictionary type. Array provides C-like performance when you work with an array’s contents and copies an array’s contents only when copying is necessary
and, immediately after you statement:
Instead, both arrays share the same sequence of element values. When you modify an element value through one array, the result is observable through the other.
For arrays, copying only takes place when you perform an action that has the potential to modify the length of the array.
So, reading these points we understand that:
Last thing: remember that, when an array is copied, only value types (structures, enumerations, primitive types) are copied. Objects are not copied, only their references (pointers) are copied