Here\'s my case: I have a table view showing contacts. Add button in the navigation bar is used to load another view for data entry. This new view has images in table header
The most common cause of this error is when you release an object and some other mechanism tries to access/release/dealloc it later.
Whenever I get a report of an EXC_BAD_ACCESS
error, my first recommendation is to step through the code to determine which line is causing it, and then to search for any explicit [object release]
calls that reference that object. Comment them out one-by-one to find where you may have gone wrong (and, of course, make sure the object is properly released later).
If the line doesn't help you figure out which object(s) is/are causing the problem, start looking through your [object release]
calls, and make sure you aren't releasing objects too many times by accident, or releasing objects you don't own.
This leads to a good general guideline regarding release
in Objective-C:
If you own an object (allocate or retain it), you release it. If you don't own it (came via convenience method or someone else allocated it), you don't release it.
(Via Memory Management with Objective C / Cocoa / iPhone, which also has some good tips.)