Sobes.tech
Junior — Middle

Quais são as restrições relacionadas com o uso de lazy let em Swift?

sobes.tech IA

Resposta da IA

No Swift, não se pode usar lazy let porque let declara uma constante, enquanto que lazy requer a possibilidade de uma inicialização diferida, o que implica que a propriedade seja mutável. Portanto, lazy só pode ser aplicado a variáveis (var).

As principais restrições ao usar lazy var:

  • A propriedade é inicializada apenas na primeira referência, o que pode levar a um atraso inesperado na primeira acessibilidade.
  • Propriedades lazy não podem ser usadas em estruturas se forem declaradas como let, pois uma estrutura é um tipo de valor, e lazy requer var.
  • Propriedades lazy não são seguras para threads por padrão, é preciso considerar isso em acessos multithread.

Exemplo de uso correto de lazy var:

class DataManager {
    lazy var data = loadData()

    func loadData() -> [String] {
        print("Carregando dados")
        return ["Um", "Dois", "Três"]
    }
}

let manager = DataManager()
// data não carregada até chamá-la
print(manager.data) // Aqui ocorre o carregamento e a impressão