Sobes.tech
Junior — Middle

Como pode implementar a adição de um objeto a um array de forma a não aumentar o número de referências fortes a ele?

sobes.tech IA

Resposta da IA

Para adicionar um objeto a um array sem aumentar o número de referências fortes a ele, pode usar um array de referências fracas. No iOS, isso é frequentemente feito com NSPointerArray com a opção de referências fracas ou envolvendo os objetos em contêineres fracos.

Exemplo usando NSPointerArray:

let weakArray = NSPointerArray.weakObjects()

class MyObject {}

var obj = MyObject()
weakArray.addPointer(Unmanaged.passUnretained(obj).toOpaque())

// Agora, weakArray contém uma referência fraca a obj, sem aumentar o contador de referências fortes

Dessa forma, os objetos no array não são mantidos fortemente, e quando o objeto é liberado, a referência torna-se automaticamente nil.

Se usar um array normal [MyObject], adicionar um objeto a ele aumentará o contador de referências fortes, o que não é adequado para esta tarefa.