Junior — Middle
Pode explicar o conceito de Retain em Objective-C e como ele afeta a memória?
sobes.tech IA
Resposta da IA
No Objective-C, o método retain é usado para gerir o tempo de vida de um objeto no modelo de contagem de referências (reference counting). Quando chama retain num objeto, aumentas o seu contador de referências em 1, o que significa que assumes a responsabilidade de o manter na memória.
Isto afeta a memória da seguinte forma: o objeto não será eliminado da memória até que o seu contador de referências chegue a zero. Para libertar o objeto, deves chamar release, diminuindo o contador em 1. Quando o contador atinge zero, o objeto é desalocado.
Exemplo:
NSObject *obj = [[NSObject alloc] init]; // contador = 1
[obj retain]; // contador = 2
[obj release]; // contador = 1
[obj release]; // contador = 0, objeto eliminado
Assim, retain ajuda a controlar o tempo de vida dos objetos e previne a sua eliminação prematura, mas o uso incorreto pode levar a fugas de memória.