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 ([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:
> http://lists.apple.com/mailman/options/cocoa-dev/jsbache%40adobe.com
>
> This email sent to [email protected]
_______________________________________________
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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]