> Le 29 mai 2015 à 19:22, Alex Zavatone <z...@mac.com> a écrit :
> 
> Was just looking at good old object initialization and came across a stupid 
> idea.
> 
> For most object initialization, we do this:
> 
> - (id)init {
>    if (self = [super init]) {
>        // Set up stuff here.
>        // this could get long.
>    }
>    return self; 
> }
> 
> in some cases, the set up within the parens could get pretty long.  In cases 
> like that, I generally set up another method to handle that for organization, 
> but if you're passing objects into into your init method, then you're passing 
> more data again and the code could get less cleaner looking than it could be.
> 
> So, I thought, "why don't we check if self != [super init] and then 
> immediately return if that is the case?"
> 
> That would change object initialization to this:
> 
> - (id)init {
>    if (self != [super init]) {
>        return;
>    }
> 
>    // Set up stuff here.
>    // We don't care if this gets long.
>    // We really don't.  This could go on and on.
>       
>    return self; 
> }
> 

And now that a reread the code, it is patently wrong.

if (self = [super init]) is a assignment to self not a comparison.

If you want to do a fast path, you have to do

self = [super init];
if (!self)
        return nil;




_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to