Sobes.tech
Junior — Middle

Será removido automaticamente um objeto da memória se for apontado por três referências fracas (weak) e uma não obrigatória (unowned)?

sobes.tech IA

Resposta da IA

O objeto será automaticamente removido da memória se não restarem referências fortes (strong) a ele. Referências fracas (weak) e não obrigatórias (unowned) não aumentam o contador de referências do objeto. No seu caso, se houver apenas três referências weak e uma unowned, mas nenhuma strong, o objeto é considerado não utilizado e será desalocado.

Exemplo:

class MyClass {}

var strongRef: MyClass? = MyClass() // referência forte
weak var weakRef1 = strongRef
weak var weakRef2 = strongRef
weak var weakRef3 = strongRef
unowned var unownedRef = strongRef!

strongRef = nil // agora não há referências fortes, o objeto será desalocado