Nella programmazione Objective-C, Automatic Reference Counting (ARC) è un miglioramento del sistema di gestione della memoria, dove il problema di tenere traccia del reference count di un oggetto viene spostato dal programmatore al compilatore.[1]
Nella programmazione Objective-C tradizionale, il programmatore avrebbe dovuto mandare dei messaggi di retain
e release
agli oggetti per deallocare o prevenire la deallocazione.[2] Con ARC, il compilatore lo fa automaticamente esaminando il codice sorgente e aggiungendo i messaggi di retain
e release
nel codice compilato.[3]
ARC non è uguale al garbage collector, visto che non ci sono thread in background che agiscono per deallocare gli oggetti che non sono più puntati in altre parti del codice.[4] Al contrario del garbage collector, ARC non gestisce automaticamente reference counting i riferimenti nei clicli; è compito del programmatore fermare i cicli utilizzando weak references[5]
ARC è stato introdotto da Apple Inc. nel 2011 per lo sviluppo di applicazioni su OS X Lion e iOS 5[6].
David Chisnall ainformIT ha detto di vedere ARC come "the first significant improvement to Objective-C since the 1980s" (il primo miglioramento significativo per l'Objective-C dagli anni '80).[7]
ARC è supportato in Xcode 4.2 o superiori, OS X Snow Leopard o superiori, e iOS 4.0 o superiori, anche se da OS X Lion e iOS 5 viene raccomandato di utilizzarlo, weak references inclusi.