Sobes.tech
Junior — Middle

Puoi spiegare il meccanismo di gestione automatica della memoria in ARC e come libera gli oggetti non utilizzati?

sobes.tech AI

Risposta dell'AI

ARC (Conteggio Automatico di Riferimento) è un meccanismo di gestione della memoria in iOS che traccia automaticamente il numero di riferimenti agli oggetti e li libera quando non sono più necessari.

Principio di funzionamento:

  • Ogni oggetto ha un contatore di riferimenti (conteggio di retention).
  • Quando si crea un riferimento a un oggetto, il contatore aumenta.
  • Quando si rimuove un riferimento, il contatore diminuisce.
  • Quando il contatore raggiunge zero, l'oggetto viene automaticamente rimosso dalla memoria.

ARC funziona durante la fase di compilazione, inserendo chiamate a retain/release nel codice, quindi il programmatore non deve gestire manualmente la memoria.

Esempio in Swift:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // conteggio di retention = 1
var person2 = person1 // conteggio di retention = 2
person1 = nil // conteggio di retention = 1
person2 = nil // conteggio di retention = 0, l'oggetto Person viene rimosso

In questo modo, ARC libera automaticamente gli oggetti quando non ci sono più riferimenti attivi.