Pode explicar o que se entende por termo MRC e qual é a sua essência?
sobes.tech IA
Resposta da IA
MRC (Contagem Manual de Referências) é um mecanismo de gestão de memória em que o programador é responsável por contar as referências a um objeto e libertar a memória quando o objeto já não é necessário.
No iOS e Objective-C, antes do aparecimento do ARC (Contagem Automática de Referências), os desenvolvedores aumentavam e diminuíam manualmente o contador de referências usando os métodos retain e release. Quando o contador de referências de um objeto atinge zero, a memória do objeto é libertada.
A essência do MRC:
- Sempre que guardar uma referência a um objeto, chame
retain. - Quando a referência já não for necessária, chame
release. - Se o contador de referências for zero, o objeto é destruído.
Isto requer atenção para evitar fugas de memória (se esquecer de chamar release) ou erros de acesso à memória já libertada (se chamar release demasiado cedo).
Exemplo:
NSObject *obj = [[NSObject alloc] init]; // contador = 1
[obj retain]; // contador = 2
[obj release]; // contador = 1
[obj release]; // contador = 0, o objeto é libertado
O MRC exige que o programador tenha controlo rigoroso sobre o ciclo de vida dos objetos, ao contrário do ARC, onde isto é automatizado.