从string动态调用类的静态方法

kna*_*ode 6 objective-c

我有两个字符串:

NSString * className = "MyClass";
NSString * methodName = "doSomething";
Run Code Online (Sandbox Code Playgroud)

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

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

Dru*_*erB 22

Class class = NSClassFromString(@"MyClass");
SEL selector = NSSelectorFromString(@"doSomething");
[class performSelector:selector];
Run Code Online (Sandbox Code Playgroud)

这会给你一个警告"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
Run Code Online (Sandbox Code Playgroud)