Objective c 对NSClassFromString()返回的类调用类方法
Objective c 对NSClassFromString()返回的类调用类方法,objective-c,foundation,class-method,Objective C,Foundation,Class Method,NSClassFromString(aClassName)返回名为aClassName的类的类对象。太好了 现在,我如何在该类对象上调用类方法?为了 Class moduleClass = NSClassFromString(aClassName); Xcode不允许我调用任何一个 AppModule* appModuleClass = moduleClass; [appModuleClass classMethod] // actually that's an objec
NSClassFromString(aClassName)
返回名为aClassName的类的类对象。太好了
现在,我如何在该类对象上调用类方法?为了
Class moduleClass = NSClassFromString(aClassName);
Xcode不允许我调用任何一个
AppModule* appModuleClass = moduleClass;
[appModuleClass classMethod] // actually that's an object instance...
或
我错过了什么?谢谢。要调用类方法,请执行以下操作:
[NSClassFromString(aClassName) performSelector:@selector(classMethod)];
也许可以:
objc_msgSend(NSClassFromString(aClassName), @selector(classMethod));
你可以用
__typeof([AppModule class]) cls = NSClassFromString(@"aClassName");
if ( [cls respondsToSelector:@selector(classMethod)] ) {
[cls classMethod];
}
它仍然在调用实例方法。我需要调用类方法。见1。我问题中的例子。好的,干杯!除了我需要使用非对象参数实际调用一个方法,我希望避免
NSInvocation
-是否有某种方法可以直接调用该方法..?请尝试以下操作:objc_msgSend(NSClassFromString(aClassName),@selector(classMethod))代码>确切地说,我最终使用了一些类似的方法,如所建议的,如果有3-4个参数,是否可以将参数发送到这些调用中?直接调用moduleClass
上的选择器也不起作用-[moduleClass classMethod]
?我只是问以下问题,因为没有问题:Class cls=NSClassFromString(@“NSString”);NSString*s=[cls stringWithString:@“一个字符串”]代码>@Rich好吧,它是Objective-C,所以它当然可以工作,但在编译时它会发出警告..我指的是编译和运行时。以上操作不会产生任何警告、错误,运行正常。尽管这段代码可能会回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
__typeof([AppModule class]) cls = NSClassFromString(@"aClassName");
if ( [cls respondsToSelector:@selector(classMethod)] ) {
[cls classMethod];
}