Avatar ·

¿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") } }