On Jan 29, 2013, at 1:22 AM, Quincey Morris 
<[email protected]> wrote:

> ** Here's an example that will crash with an early return:
> 
>   if (self) {
>       if (foo == nil)
>           return nil;
>       _foo = foo;
>       _bar = malloc (100);
>       .....
>   }
> …..
> - (void) dealloc {
>    free (_bar);
> }

Actually this is fine, because free(NULL) is legal. A better example would be a 
dealloc that calls CFRelease, because [for some reason] CFRelease does crash if 
passed NULL.

I would argue that the bug here is in the dealloc method. Dealloc methods 
should be written to run correctly if the init method was not called or had to 
back out partway through. (And this is, I think, one of the reasons why +alloc 
zeroes out the bytes of an object.)

—Jens
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to