Question

NSClassFromString(aClassName) returns a class object of the class named aClassName. Great.

Now how can I call a class method on that class object? For

  Class moduleClass = NSClassFromString(aClassName);

Xcode won't allow me to either call

  AppModule* appModuleClass = moduleClass;
  [appModuleClass classMethod]     // actually that's an object instance...

or

  [((AppModule)moduleClass) classMethod];     // C-style cast not allowed

What am I missing here? Thanks.

Was it helpful?

Solution

To call a class method do so:

[NSClassFromString(aClassName) performSelector:@selector(classMethod)];

Maybe this could work:

objc_msgSend(NSClassFromString(aClassName), @selector(classMethod));

OTHER TIPS

You can use

__typeof([AppModule class]) cls = NSClassFromString(@"aClassName");
if ( [cls respondsToSelector:@selector(classMethod)] ) {
    [cls classMethod];
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top