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