Quelle est la différence entre les références weak et unowned en Swift pour la gestion de la mémoire ?
Bonjour à tous ! J'apprends Swift et j'essaie de comprendre l'ARC (Automatic Reference Counting). J'ai lu la documentation, mais je n'arrive pas à saisir la différence entre les références weak et unowned. Toutes deux ne semblent pas augmenter le compteur de références, mais quelle est alors la différence ?
J'ai un exemple comme celui-ci. Je développe une application simple avec un profil utilisateur et son avatar. Si l'utilisateur quitte l'écran, je veux que les objets Profile et Avatar soient libérés de la mémoire. Mais j'obtiens une fuite mémoire à cause d'un cycle de références fortes.
Voici mon code simplifié :
```swift
class Profile {
let name: String
var avatar: Avatar?
init(name: String) {
self.name = name
print("Profile \(name) created")
}
deinit {
print("Profile \(name) deallocated")
}
}
class Avatar {
let imageName: String
var profile: Profile? // Voici le problème
init(imageName: String) {
self.imageName = imageName
print("Avatar \(imageName) created")
No answers yet.
Connectez-vous pour laisser une réponse