Sobes.tech
Junior — Middle

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.