Junior
Qu'est-ce que lazy ?
sobes.tech IA
Réponse de l'IA
Le mot-clé lazy est utilisé pour l'initialisation différée d'une propriété.
Une propriété avec lazy est initialisée uniquement lors de la première utilisation. Cela est utile pour:
- La performance : si la création de l'objet nécessite beaucoup de ressources, mais pas toujours.
- Éviter les dépendances cycliques lors de l'initialisation.
- Travailler avec des ressources externes ou des données qui peuvent ne pas être disponibles lors de la création de l'objet.
Les propriétés lazy doivent être :
- Des variables (
var), car leur valeur peut changer lors de la première utilisation. - Ne pas avoir de observateurs de propriétés (
willSet,didSet) jusqu'à la première utilisation.
class HeavyResource {
init() {
print("Ressource lourde initialisée")
// Simulation d'une initialisation coûteuse
Thread.sleep(forTimeInterval: 1)
}
}
class MyPresenter {
let name = "Presenter"
// propriété lazy, initialisée lors de la première utilisation
lazy var heavyResource: HeavyResource = {
print("Création de la ressource lourde")
return HeavyResource()
}()
init() {
print("\(name) initialisé")
}
func accessResource() {
print("Accès à la ressource lourde...")
_ = heavyResource // L'initialisation de la propriété lazy se produit ici
print("Ressource accédée.")
}
}
// Initialiser le présentateur
let presenter = MyPresenter() // Sortie : Presenter initialized
// L'accès à la ressource se produit plus tard, lorsque cela est réellement nécessaire
presenter.accessResource()
/*
Sortie:
Accès à la ressource lourde...
Création de la ressource lourde
Ressource lourde initialisée
Ressource accédée.
*/
// L'accès répété ne provoque pas une réinitialisation
presenter.accessResource()
/*
Sortie:
Accès à la ressource lourde...
Ressource accédée.
*/