In Objective-C, is there a way to get a class and send messages to it when you have the name of the class as a string? For example, is there a function func
where func(@"NSString") == [NSString class]
?
The reason that I want to know this is I am building a dynamic linker library for a language I am working on, and I want it to have an interface to Objective-C libraries.
You can use
NSClassFromString(NSString className)
to get the class object from its name.Hope this helps!
Yes — two, in fact. If you have a Foundation-type framework (e.g. from Cocoa, Cocoa Touch or GNUstep), you can use the
NSClassFromString()
function, which is precisely the same as yourfunc
. If you do not want to depend on a framework, there's a similar runtime function,objc_getClass()
, that takes aconst char*
and returns the named class (ornil
if none is found).