0Pricing
Swift Academy · Aula

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 unaffected

Coleçõ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

  1. Fundamentos de ARC: strong / weak / unowned
  2. Ciclos de retenção e como rompê-los com weak/unowned
  3. Tipos de valor para reduzir o compartilhamento
← Voltar para Swift Academy