Avatar ·

Qual é a diferença entre referências weak e unowned em Swift no gerenciamento de memória?

Olá a todos! Estou estudando Swift e tentando entender o ARC (Automatic Reference Counting). Li a documentação, mas não consigo entender a diferença entre referências weak e unowned. Ambas parecem não aumentar o contador de referências, mas qual é a diferença? Tenho um exemplo assim. Estou escrevendo um aplicativo simples com perfil de usuário e seu avatar. Se o usuário sai da tela, quero que o objeto Profile e seu Avatar sejam liberados da memória. Mas estou obtendo um vazamento de memória devido a um ciclo de referências fortes. Aqui está meu 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? // Aqui está o problema init(imageName: String) { self.imageName = imageName print("Avatar \(imageName) created") } }