首先,我们需要分析该类的私有方法
NSString *className = NSStringFromClass(NSClassFromString(@"XXXXXX"));//私有类类名
const char *cClassName = [className UTF8String];
id theClass = objc_getClass(cClassName);
unsigned int outCount;
unsigned int outCount2;
Method *m = class_copyMethodList(theClass,&outCount);
objc_property_t *t=class_copyPropertyList(theClass, &outCount2);
NSLog(@"%d",outCount);
for (int i = 0; i<outCount; i++) {//获取方法
SEL a = method_getName(*(m+i));
NSString *sn = NSStringFromSelector(a);
NSLog(@"%@",sn);
}
NSLog(@"==============");
for (int i = 0; i<outCount2; i++) {//获取属性
NSString *sn = [NSString stringWithCString:property_getName(*(t+i)) encoding:NSUTF8StringEncoding];
NSLog(@"%@",sn);
}
得到了类的私有方法,接下来我们只需要创建一个相应的实体就可以调用了。
Class cls = NSClassFromString(@"XXXX");//私有类类名
id test=[[cls alloc]init];
SEL selector = @selector(xxxx);
if (test &&[test respondsToSelector:selector]) {
[test performSelector:selector];
}
PS:静态库所使用的私有类类名,可通过Instruments工具监控生成的对象来获取