Sobes.tech
Junior — Middle

Quais princípios e mecanismos são utilizados para a alocação e libertação de memória na linguagem Swift?

sobes.tech IA

Resposta da IA

Em Swift, a gestão de memória baseia-se na contagem automática de referências (ARC — Automatic Reference Counting).

Princípios básicos:

  • Cada objeto de classe tem um contador de referências, que aumenta ao criar uma nova referência ao objeto e diminui ao remover uma referência.
  • Quando o contador de referências de um objeto atinge zero, a memória do objeto é libertada automaticamente.
  • O ARC funciona durante a compilação e insere chamadas a retain/release automaticamente.

Mecanismos:

  • strong — referência forte normal, aumenta o contador.
  • weak — referência fraca, não aumenta o contador, usada para evitar referências cíclicas.
  • unowned — referência fraca não segura, assume que o objeto sempre existe durante o acesso.

Exemplo:

class Person {
    let name: String
    init(name: String) { self.name = name }
}

var person1: Person? = Person(name: "Alice")
var person2 = person1  // o contador de referências aumenta
person1 = nil         // o contador diminui
person2 = nil         // o objeto é libertado, pois o contador chegou a 0

Assim, Swift liberta a memória automaticamente, mas o programador deve estar atento às referências cíclicas para evitar fugas de memória.