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.
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 your func
. If you do not want to depend on a framework, there's a similar runtime function, objc_getClass()
, that takes a const char*
and returns the named class (or nil
if none is found).
You can use NSClassFromString(NSString className)
to get the class object from its name.
Hope this helps!