Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to get a class by name?

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.

like image 596
Adrian Avatar asked Dec 07 '22 00:12

Adrian


2 Answers

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).

like image 179
Chuck Avatar answered Jan 02 '23 18:01

Chuck


You can use NSClassFromString(NSString className) to get the class object from its name.

Hope this helps!

like image 42
Ryan Q Avatar answered Jan 02 '23 20:01

Ryan Q