Sobes.tech
Junior — Middle

Como é implementado o trabalho automático e manual com a memória no iOS, e quais os mecanismos utilizados para gerir os recursos?

sobes.tech IA

Resposta da IA

No iOS, a gestão de memória é implementada principalmente de duas formas: automática e manual.

  1. Gestão automática de memória (ARC — Contagem Automática de Referências)

    O ARC é um mecanismo integrado no compilador que adiciona automaticamente chamadas a retain/release para objetos Objective-C e Swift. Conta o número de referências a um objeto e liberta a memória quando o contador chega a zero.

    Exemplo:

    class Person {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    var p1: Person? = Person(name: "Иван")
    var p2 = p1 // o contador de referências aumenta
    p1 = nil // o contador diminui
    p2 = nil // o objeto é libertado
    
  2. Gestão manual de memória

    Em versões antigas do iOS (antes do ARC), o programador chamava manualmente os métodos retain, release e autorelease para gerir o ciclo de vida dos objetos.

  3. Gestão de recursos

    Para além da memória, para gerir recursos (ficheiros, ligações de rede, temporizadores), utilizam-se padrões como deinit em Swift para libertar recursos ao destruir um objeto.

    Também se utilizam amplamente construções como autoreleasepool para gerir objetos temporários.

Assim, o ARC simplifica significativamente o trabalho com memória, reduzindo a probabilidade de fugas, e a gestão manual é usada raramente e apenas em casos específicos.