View Controller Memory Management

Memory is at a premium on a mobile device. Thus you want to minimize your use of memory — especially when the memory-hogging objects you’re retaining are not needed at this moment. Because a view controller is the basis of so much of your application’s architecture, it is likely to be the main place where you’ll concern yourself with releasing unneeded memory.

The object of releasing memory, in the multitasking world, is partly altruistic and partly selfish. You want to keep your memory usage as low as possible so that other apps can be launched and so that the user can switch between numerous backgrounded apps, bringing each one to the front and finding it in the state in which it was suspended. You also want to prevent your app from being terminated. If your app is backgrounded and is considered a memory hog, it may be terminated when memory runs short; hence you want to reduce your memory usage at the time the app goes into the background. If your app is warned that memory is running short and it doesn’t take appropriate action to reduce its memory usage, your app may be killed even while running in the foreground!

The runtime helps you keep your view controller’s memory usage as low as possible by managing its memory for you in a special way. A view controller itself is usually lightweight, but a view is memory-intensive. A view controller can persist without its view being visible to the user — for example, because a presented view has replaced ...

Get Programming iOS 6, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.