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.