iphone - Over releasing or not? -


sorry newbie. on releasing overlayviewcontroller? since it's autorelease , release again @ dealloc. or doesn't matter? thank helping out.

@implementation viewcontroller  @synthesize imageview, overlayviewcontroller, camerabtn;   #pragma mark - #pragma mark view controller  - (void)viewdidload  {     [super viewdidload];  // sharekit logout button     self.navigationitem.leftbarbuttonitem = [[[uibarbuttonitem alloc] initwithtitle:shklocalizedstring(@"logout") style:uibarbuttonitemstylebordered target:self action:@selector(logout)] autorelease];      self.overlayviewcontroller =     [[[overlayviewcontroller alloc] initwithnibname:@"overlayviewcontroller" bundle:nil] autorelease];  // delegate notified when pictures taken , when dismiss image picker     self.overlayviewcontroller.delegate = self;     if (![uiimagepickercontroller issourcetypeavailable:uiimagepickercontrollersourcetypecamera])     {         camerabtn.hidden = yes;     } }   -(void)viewwillappear:(bool)animated {     [super viewwillappear:animated]; }  -(bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation {     return uiinterfaceorientationisportrait(interfaceorientation); }  - (void)viewdidunload {     self.imageview = nil;     self.overlayviewcontroller = nil; }  - (void)dealloc {        [imageview release];     [overlayviewcontroller release];     [super dealloc]; } 

the 1 part missing definition of property overlayviewcontroller. if it's got retain option fine.

in viewdidload, allocating , autoreleasing, balanced. assign property overlayviewcontroller, , if has retain option (which should in case), call retain allocated overlayviewcontroller. that's want.

in dealloc, releasing variable backs property. ok , correct, controller released correctly. however, released earlier: in viewdidunload, assign nil property. release controller. time dealloc called overlayviewcontroller variable nil (but may still contain controller, depending on how object used, is, depending on whether viewdidunload called or not.

so code presented here correct if property overlayviewcontroller has retain option.


Comments