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
lazynão podem ser usadas em estruturas se forem declaradas comolet, pois uma estrutura é um tipo de valor, elazyrequervar. - Propriedades
lazynã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