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.