¿Cuál es la diferencia entre referencias weak y unowned en Swift para la gestión de memoria?
¡Hola a todos! Estoy aprendiendo Swift y tratando de entender ARC (Automatic Reference Counting). Leí la documentación, pero no puedo entender la diferencia entre las referencias weak y unowned. Ambas parecen no incrementar el contador de referencias, pero ¿cuál es la diferencia entonces?
Tengo este ejemplo. Estoy escribiendo una aplicación simple con un perfil de usuario y su avatar. Si el usuario sale de la pantalla, quiero que los objetos Profile y su Avatar se liberen de la memoria. Pero obtengo una fuga de memoria debido a un ciclo de referencias fuertes.
Aquí está mi código simplificado:
```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? // Aquí está el problema
init(imageName: String) {
self.imageName = imageName
print("Avatar \(imageName) created")
}
}
No answers yet.
Inicia sesión para dejar una respuesta