For this use case you can also use the fact that classes are objects.
Something like the following:
        Class theClass = nil;
        if (.....)
                theClass = [Class1 class];
        else
                theClass = [Class2 class];
        id obj = [[theClass alloc] initWithFoo:.... bar:....];

Jesper Storm Bache


On Feb 10, 2010, at 12:07 PM, Jens Alfke wrote:

> 
> On Feb 10, 2010, at 5:27 AM, Giannandrea Castaldi wrote:
> 
>> I would like to alloc an object and defer the initialization to
>> another object, is a good practice? The reason is that I can alloc
>> several types of objects but the init method have the same signature.
> 
> It's unusual, but I've done it once or twice. It looks like:
> 
>       id obj;
>       if (.....)
>               obj = [Class1 alloc];
>       else
>               obj = [Class2 alloc];
>       obj = [obj initWithFoo:.... bar:....];
> 
> It's important that you reassign 'obj' to the value of the init call, since 
> initializers are allowed to return a different object than the receiver, and 
> the class-cluster design pattern takes advantage of this.
> 
> —Jens
> 
> _______________________________________________
> 
> 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:
> http://lists.apple.com/mailman/options/cocoa-dev/jsbache%40adobe.com
> 
> This email sent to jsba...@adobe.com

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to