Middle
As coleções padrão de arrays são tipos de valor e tipos de referência?
sobes.tech IA
Resposta da IA
Os arrays (Array) em Swift são estruturas (struct), e as estruturas são tipos de valor (Value Types). Ao atribuir ou passar um array, é feita uma cópia dele.
No entanto, para otimizar o desempenho, o sistema de cópia de arrays possui um comportamento de Copy-on-Write. Isso significa que a cópia real dos dados do array só ocorre na primeira modificação de uma das cópias. Até esse momento, ambas as cópias do array compartilham o mesmo armazenamento de dados.
Tipos de valor: Struct, Enum, Int, String, Double, Bool. Tipos de referência: Class, Function, Closure.
Exemplo que ilustra Copy-on-Write:
var initialArray = [1, 2, 3]
var copiedArray = initialArray // Ainda não há cópia real dos dados
print(initialArray[0]) // 1
print(copiedArray[0]) // 1
copiedArray[0] = 10 // Aqui ocorre a cópia real dos dados
print(initialArray[0]) // 1 (o array original não mudou)
print(copiedArray[0]) // 10 (apenas a versão copiada mudou)