在NSClassFromString()返回的类上调用类方法

时间:2014-04-26 13:39:19

标签: objective-c foundation class-method

NSClassFromString(aClassName)返回名为aClassName的类的类对象。大。

现在如何在该类对象上调用类方法?对于

  Class moduleClass = NSClassFromString(aClassName);

Xcode不允许我拨打电话

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

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

我在这里缺少什么?感谢。

2 个答案:

答案 0 :(得分:5)

要调用类方法,请执行以下操作:

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

也许this可行:

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

答案 1 :(得分:0)

您可以使用

__typeof([AppModule class]) cls = NSClassFromString(@"aClassName");
if ( [cls respondsToSelector:@selector(classMethod)] ) {
    [cls classMethod];
}