views:

118

answers:

2

So i'm overriding dealloc method because the object is a composite object made up of one other object.

I originally had this dealloc method:

-(id) dealloc; // Override to release the Rectangle object’s memory 
{
    [rect release];
    [super dealloc];
    return self;
}

After looking in the book I saw another answer:

{
   [rect release];
   return [super dealloc];
}

just wondering if both work equally.

Thanks,

Nick

+6  A: 

They're both wrong. dealloc returns void, not id:

- (void) dealloc {
  [rect release];
  [super dealloc];
}
Dave DeLong
A: 

I have just checked the NSObject reference: dealloc has not return type. So, I think it is incorrect to define such a signature. Thus, call to dealloc should not expect a return value.

Unless you are not subclassing NSObject...

Laurent Etiemble
Even if you are subclassing NSObject, -dealloc absolutely should not return a value (as Objective-C does not support co-variant types).
bbum