On Tue, Jan 13, 2009 at 8:06 PM, Ken Thomases <k...@codeweavers.com> wrote:
> On Jan 13, 2009, at 3:33 PM, Jean-Daniel Dupas wrote: > > he is just talking about class name, not class. >> >> NSClassFromString() is probably what you're looking for. >> >> NSMutableString *clsName = derive class name from the entry. >> >> Class cls = NSClassFromString(clsName); >> >> id<YouProtocol> instance = [[cls alloc] init]; >> > > I'll just add the following: > > If you don't need such complete flexibility -- for example, if you're > selecting from a fixed set of classes by some tag -- then you don't need to > compute a class name and look up the class that way. > > Classes are objects and so they can be stored in collections. For example, > you could have a lookup dictionary that mapped from keys to class objects. > You would construct the dictionary like this: > > [NSDictionary dictionaryWithObjectsAndKeys: > [SomeClass class], "key1", > [OtherClass class], "key2", > [ThirdClass class], "key3", > // ... etc. > nil]; > > This adds a small amount of safety in the same way that > statically-specified stuff generally does. For example, the compiler will > catch typos in class names. > Thanks for this suggestion. This looks fairly clean except that the space is allocated at the beginning. This may not be a big deal in some cases. In the other way, you allocate space and insert in the dictionary only when needed. Also, eventually i need the real object instances inserted in the dictionary. -mohan -mohan > > Cheers, > Ken > > _______________________________________________ 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