risposta

8

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.

3

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.