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.

有帮助吗?

解决方案

To call a class method do so:

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

Maybe this could work:

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

其他提示

You can use

__typeof([AppModule class]) cls = NSClassFromString(@"aClassName");
if ( [cls respondsToSelector:@selector(classMethod)] ) {
    [cls classMethod];
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top