Rilascio degli oggetti

di il
10 risposte

Rilascio degli oggetti

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

  • Re: Rilascio degli oggetti

    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.
  • Re: Rilascio degli oggetti

    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.
  • Re: Rilascio degli oggetti

    Ma allora quand"è che gli oggetti vengono rilasciati?
  • Re: Rilascio degli oggetti

    Appena il conteggio dei riferimenti va a zero.
  • Re: Rilascio degli oggetti

    Quindi anche se siamo al di fuori di un blocco di autorelease?
  • Re: Rilascio degli oggetti

    Assolutamente si!
  • Re: Rilascio degli oggetti

    barba59 ha scritto:


    Appena il conteggio dei riferimenti va a zero.
    Sarà poco dopo, appena il thread di pulizia interviene. O sbaglio?
  • Re: Rilascio degli oggetti

    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.
  • Re: Rilascio degli oggetti

    Come funziona con i riferimenti circolari?
  • Re: Rilascio degli oggetti

    Per questo guarda il thread 'Circoli viziosi in ARC'.
Devi accedere o registrarti per scrivere nel forum
10 risposte