Sobes.tech
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)