Automatic Reference Counting (ARC) makes memory management the job of the compiler by inserting retain and release calls. ARC consists of a frontend compiler that inserts the appropriate memory management calls and an optimizer that removes unnecessary calls. ARC supports iOS 5+ and OS X 10.7+ and allows using variable ownership qualifiers like __strong (default), __weak, __unsafe_unretained, and __autoreleasing to avoid retain cycles.