Memory is a finite resource. Your app has to tell iOS when it wants to keep objects in memory and when they can be deleted to free the memory for other uses.
Before Xcode 4.3, developers managed memory manually. Many sample projects on the web still use manual memory management code, so this chapter explains how to recognize this code and how to update it.
From Xcode 4.3 onward, memory management is automated and uses a technology called Automated Reference Counting (ARC). As long as you tell Xcode to enable ARC when you create a new project, you can leave it to work behind the scenes. In some specialized situations, some manual adjustment is still needed, but they’re mostly reserved for code that uses older C-based libraries. Simpler object-based code works as-is.
Internally, the old and new schemes for memory management work the same way. The difference is that in the older scheme, you were responsible for adding explicit memory management instructions to your code. In the new scheme, Xcode adds the instructions for you when it builds your app. Mostly they just work, so you don’t have to worry about them.
Understanding manual memory management
The original memory management code is easy to understand, but very difficult to work with. Unfortunately, if you get it wrong, your app is likely to crash. In fact, memory management issues were—and sometimes still are—one ...