ARC는 Auto Reference Counting 으로 자동참조횟수를 가리키는 단어이다.
ARC를 이용하여 iOS 내의 참조(메모리)를 자동으로 관리하고 있고, 참조 후에 언제 끝날지 몰라서 항상 대기하고 있는 GC와 다르게 ARC는 참조 시에 종료 시점을 알아두기 때문에 항상 대기 하고 있지 않아도 알아서 카운팅을 종료 시키게 된다.
구조체와 열거형 처럼 값 타입을 주로 사용하고 있는 것들에는 딱히 메모리를 관리할 필요가 없지만, 클래스와 저장 프로퍼티 같은 메모리를 사용하는 참조 타입의 경우에는 항상 메모리를 관리 해주어야 한다. 관리가 잘 못됐을 경우에는 기기 자체 성능의 저하가 있을 수 있기 때문에 메모리 관리는 정말 중요한 부분이다.
참조타입에 대한 참조가 시작되면 Reference Counting 이 1씩 올라가게 된다. 그러면 이 카운팅을 ARC는 관리하게 되고, 사용을 마친 메모리에 대해서는 Counting을 내려 메모리에서 나가게끔 해주어야 한다.
ARC는 Counting이 0이 되어야 메모리에서 해제 시켜준다.
차이는 대표적으로 두가지가 있는데, 앞서 말했듯이 GC는 언제 끝나는지 몰라서 항상 대기하고 있고, GC는 참조 카운팅 시점이 실행중에 동적으로 계속 관리하는데, ARC는 참조 카운팅 시점을 컴파일시에 관리합니다.