Tipos de valor para reduzir o compartilhamento
Prefira tipos de valor para evitar compartilhamento acidental: structs/enums são copiados na atribuição, favorecendo isolamento, previsibilidade e segurança em threads.
Tipos de valor para reduzir o compartilhamento é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 3 aulas no total.
Por que usar tipos de valor?
As estruturas/enumerações do Swift são tipos de valor: atribuí-las e passá-las cria cópias. Isso reduz o compartilhamento acidental e facilita o raciocínio sobre o estado.
Compartilhamento de referências (classe)
Classes são tipos de referência: várias variáveis podem apontar para a mesma instância, portanto as mutações se propagam entre os aliases.
final class Bag {
var items: [String]
init(_ items: [String]) { self.items = items }
}
let a = Bag(["pen"])
let b = a // REF COPY: a and b refer to the same object
b.items.append("book")
print(a.items) // ["pen","book"] — mutated via b
print(b.items)Cópias independentes (estrutura)
Estruturas são copiadas na atribuição. Cada variável possui seus próprios dados; as mutações permanecem locais.
struct Point { var x: Int; var y: Int }
var p1 = Point(x: 1, y: 2)
var p2 = p1 // VALUE COPY: independent
p2.x = 99
print(p1.x, p2.x) // 1, 99 — p1 unaffectedColeções com cópia na escrita
Matriz/Dicionário/Conjunto são tipos de valor com cópia na escrita. Quando você modifica uma matriz referenciada de forma não exclusiva, o Swift cria uma cópia nova.
var a1 = [1,2,3]
var a2 = a1 // copy-on-write handle
a2.append(4) // triggers copy if a1 is uniquely referenced
print(a1) // [1,2,3]
print(a2) // [1,2,3,4]Atualizações em estilo puro
Projete APIs aproximadamente puras: aceite um valor e retorne um valor novo. Assim, quem chama evita mutações compartilhadas inesperadas.
struct Profile {
var name: String
var tags: [String]
}
func addTag(_ p: Profile, _ tag: String) -> Profile {
var copy = p // work on a value copy
copy.tags.append(tag) // caller gets a new updated value
return copy
}
let pA = Profile(name: "Ana", tags: [])
let pB = addTag(pA, "swift")
print(pA.tags) // []
print(pB.tags) // ["swift"]Escolha com cuidado
Diretrizes:
- Prefira estrutura para dados pequenos, imutáveis ou modificados localmente.
- Use classe quando identidade, estado mutável compartilhado ou herança forem necessários.
- Tipos de valor reduzem o compartilhamento e tornam mais seguro raciocinar sobre a concorrência.
Compartilhamento de valores versus referências
Verificação rápida: por que os tipos de valor ajudam a evitar o compartilhamento não intencional?
Recapitulação
Recapitulação: estruturas/enumerações são valores. Use-as para minimizar o estado mutável compartilhado. As coleções usam cópia na escrita para que as mutações não surpreendam outros detentores.
Perguntas Frequentes
A aula “Tipos de valor para reduzir o compartilhamento” é grátis?
Sim — o texto completo de “Tipos de valor para reduzir o compartilhamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 3 aulas no total.
O que vou aprender em “Tipos de valor para reduzir o compartilhamento”?
Prefira tipos de valor para evitar compartilhamento acidental: structs/enums são copiados na atribuição, favorecendo isolamento, previsibilidade e segurança em threads. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Tipos de valor para reduzir o compartilhamento”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos de ARC: strong / weak / unowned
- Ciclos de retenção e como rompê-los com weak/unowned
- Tipos de valor para reduzir o compartilhamento