Junior — Middle
Como pode criar uma estrutura de dados que mantém referências fracas a objetos?
sobes.tech IA
Resposta da IA
Para criar uma estrutura de dados que armazena referências fracas a objetos no iOS (Swift/Objective-C), usa-se a classe NSMapTable ou NSHashTable com a opção de referências fracas.
Referências fracas permitem que os objetos sejam libertados da memória se não houver referências fortes a eles, prevenindo fugas de memória.
Exemplo em Swift com NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // agora o objeto pode ser removido da memória
if let value = mapTable.object(forKey: key) {
print("Objeto existe")
} else {
print("Objeto foi removido")
}
Também é possível usar Weak wrapper — um envoltório com uma referência fraca interna, se for necessária uma estrutura de dados personalizada.
Assim, para armazenar referências fracas, usa-se NSMapTable com configuração weak-to-weak ou weak-to-strong, dependendo da tarefa.