Riferimento automatico Conteggio degli oggetti Objective-C assegnati. Che dire delle variabili primitive come char *
?ARC rilascia la memoria di malloc per te?
risposta
No come da llvm document on ARC
automatico di conteggio di riferimento implementa gestione automatica della memoria per gli oggetti Objective-C e blocchi, liberando il programmatore dalla necessità esplicitamente inserire conserva e rilascia. Non fornisce un collezionista di cicli; gli utenti devono invece gestire esplicitamente la durata.
e
Un puntatore oggetto a conservazione (o puntatore a conservazione) è un valore di tipo puntatore oggetto a conservazione (tipo a conservazione). Ci sono tre tipi di tipi di puntatore di oggetto a conservazione:
- puntatori di blocco (formata applicando l'accento circonflesso (^) dichiaratore sigillo ad un tipo di funzione)
- Objective-C Oggetto puntatori (id, classe, NSFoo *, ecc)
- typedef contrassegnati con __attribute __ ((NSObject))
Altri tipi di puntatore, come int * e CFStringRef, non sono soggetti alla semantica di ARC e restrizioni.
ARC rilasciare direttamente solo oggetti objc (non char*
, void*
, int*
...). Tuttavia ARC ancora chiama il metodo dealloc degli oggetti. Quindi, se hai un oggetto ObjC che malloc sta accumulando un po 'di memoria e punta un char * su di esso, e il metodo dealloc chiama gratis, quella memoria verrà comunque correttamente smaltita.
Lo stesso per gli oggetti della Core Foundation, è necessario ancora CFRelease
. Anche i tipi CF con bridge a pagamento gratuito necessitano di chiamate manuali allo CFRelease
.