从字符串对类动态调用静态方法



我有两个字符串:

NSString * className = "MyClass";
NSString * methodName = "doSomething";

MyClass类定义和静态方法doSomething也存在。

如何从两个字符串动态触发[MyClass-doSomething]?

Class class = NSClassFromString(@"MyClass");
SEL selector = NSSelectorFromString(@"doSomething");
[class performSelector:selector];

这会给你一个警告"PerformSelector可能会导致泄漏,因为它的选择器未知",你可以这样忽略它(有关详细信息,请参阅此问题):

Class class = NSClassFromString(@"MyClass");
SEL selector = NSSelectorFromString(@"doSomething");    
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[class performSelector:selector];
#pragma clang diagnostic pop

您只需要使用

[NSClassFromString(className) performSelector:NSSelectorFromString(methodName)];

这也是一个相关的后

最新更新