Difference between value type and reference type in Swift