If you push your navigation back and forth and you see memory climbing unlimitedly, you have a memory management problem. Even with ARC, you may have abandoned memory. You can detect it using the Allocations template in Instruments.
- In Instruments, put the application in a well-known starting state (for example, showing the table view).
- Click Mark Heap button under Heapshot Analysis.
- Navigate your controller back and forth once.
- You will see a small increase in memory usage in the allocations graph. This is normal, internal caches may be storing some information.
- Click the Mark Heap button again.
- You will see a number of objects in the Still Live column.
- Repeat steps 3-6 many times and see if there are "still living" objects after every iteration.
If there is an almost constant number of still living objects in each heapshot, click the right arrow button in one of the heapshots and you will see all the objects that are still living. Look for objects probably created by you, select one, expand it, and select its memory address with a simple click. Then click the Extended Detail button to see a stack trace showing where the object was allocated. With this code context I'm sure you will understand why your memory was abandoned.