Yet another EXC_BAD_ACCESS - However with zombie (instruments), never exe_bad_access <p>I have spent hours on this and read everybit on the web about memory management, zombies. leaks (tried instruments). But I cannot figure this one out. Does someone has a clue? I am getting a EXC_BAD_ACCESS at the following like of code on popping the ChildViewController.</p> <pre><code>[profileVO release]; profileVO = nil; </code></pre> <p>I strongly feel I have followed all memory management best practices!</p> <p><strong>Details:</strong></p> <p>I have a model file. (CachedProfileVO)</p> <p><strong>CachedProfileVO.h</strong></p> <pre><code>@interface CachedProfileVO : NSObject { NSString *name; NSString *email; } @property (nonatomic, retain) NSString *name; @property (nonatomic, retain) NSString *email; @end </code></pre> <p><strong>CachedProfileVO.m</strong></p> <pre><code>@synthesize name, email; - (void) dealloc { [super dealloc]; [name release]; name= nil; [email release]; email = nil; } </code></pre> <p>Now I have a UINavigationController. The ParentViewController and the ChildViewController. I invoke the ChildViewController as follows:</p> <pre><code>[self.navigationCntroller pushViewcontroller:childViewcontroller animated:YES]; </code></pre> <p>In the ChildViewController, I basically use the model CachedProfileVO. However when this view controller is popped (back button on UI), it gives a EXC_BAD_ACCESS</p> <p><strong>ChildViewController.h</strong></p> <pre><code>@interface ChildViewcontroller : UITableViewController { CachedProfileVO *profileVO; } @property (nonatomic, retain) CachedProfileVO *profileVO; @end </code></pre> <p><strong>ChildViewController.m</strong></p> <pre><code>@synthesize profileVO; - (void) dealloc { [super dealloc]; [profileVO release]; profileVO = nil; ****** GETTING EXE_BAD_ACCESS here } - (void) viewDidLoad { CachedProfileVO *vo = [CachedProfileVO alloc] init]; self.profileVO = vo; [vo release]; } //responseString looks like this: [Murdoch, murdoch@email.com][other data][more data] - (void) populateProfile:(NSString *) responseString { NSMutableString *str = [[NSMutableString alloc] initWithCapacity:20]; [str setString:responseString]; [str deleteCharactersInRange: NSMakeRange(0,1)]; [str deleteCharactersInRange: NSMakeRange([str length]-1,1)]; NSArray *tempArray = [str componentsSeparatedByString: @"]["]; NSString *tempStr = (NSString*)[tempArray objectAtIndex:0]; NSArray *bioArray = [tempStr componentsSeparatedByString:@","]; self.profileVO.name = (NSString*)[bioArray objectAtIndex:0]; self.profileVO.email= (NSString*)[bioArray objectAtIndex:1]; [str release]; str = nil; } </code></pre> <p>Note that the function populateProfile is called after some event. I know it is called. And dealloc then causes the problem. Also this does not happen in every pop. I have to try several times to reproduce. It is never reproduced using zombies in instruments!!!</p>