Rilascio degli oggetti

di Anonimizzato10204 il
10 risposte
Ciao a tutti. Ho scritto un esempio in xcode e ottengo un errore sul rilascio della memoria. Ho visto che vi sono diversi modelli di gestione della memoria, quale è quello da usare?

10 Risposte

  • Il modello da usare si chiama ARC Automatic Reference Counting. È il modello che viene automaticamente impostato quando crei un nuovo progetto. A spanne il funzionamento è il seguente, gli oggetti creati con 'autorelease' vengono inseriti in un pool, quando il pool viene chiuso si occupa di distruggere gli oggetti in esso contenuti.
  • E invece no, quello che ho scritto non è corretto. È vero che l' autoreleasepool funziona come ho detto ma l' ARC, ovvero Automatic Reference Counting non c' entra niente con l' autoreleasepool. L' ARC si occupa di tenere in automatico il conteggio dei riferimenti e quando questo va a zero distrugge l' oggetto sia che si trovi oppure no dentro un autoreleasepool.
  • Ma allora quand"è che gli oggetti vengono rilasciati?
  • Appena il conteggio dei riferimenti va a zero.
  • Quindi anche se siamo al di fuori di un blocco di autorelease?
  • Assolutamente si!
  • barba59 ha scritto:


    Appena il conteggio dei riferimenti va a zero.
    Sarà poco dopo, appena il thread di pulizia interviene. O sbaglio?
  • Non c' è nessun thread di pulizia, non funziona come la garbage collection. Quando usi l' Automatic Reference Counting il compilatore provvede ad alterare il codice inserendo istruzioni apposite per contare i riferimenti e fare la distruzione nel momento esatto in cui il contatore va a zero.
  • Come funziona con i riferimenti circolari?
  • Per questo guarda il thread 'Circoli viziosi in ARC'.
Devi accedere o registrarti per scrivere nel forum
10 risposte