我有两个字符串:
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)];
这也是一个相关的后