1.BaseClass是基类,SubClass继承BaseClass,并且重写基类的manageMethod方法,通过类名@"SubClass"获取类,并通过基类调用manageMethod方法,实现工厂模式。
NSString *className = @"SubClass";
NSString *param = [dic objectForKey:@"param"];
Class ob = NSClassFromString( className );
BaseClass *baseObject = [[ob alloc] init];
[baseObject manageMethod:methodName param:param];
2.在subClass中实现manageMethod方法,并通过方法名调用方法,找了很久才发现有NSSelectorFromString这个方法,就不用像java那些去实现map或者去反射,大概机制应该是相同的吧。
-(void)manageMethod:(NSString *)methodName param:(NSString *)param
{
[self performSelector:NSSelectorFromString( methodName ) withObject:param afterDelay:0];
}
还有一种通过方法名调用方法的方式:http://www.cnblogs.com/tiechui/p/3819805.html
id theClass = objc_getClass([@"SubClass" UTF8String]);
unsigned int outCount;
Method *m = class_copyMethodList(ob, &outCount);
for (int i = 0; i<outCount; i++) {
SEL a = method_getName(*(m+i));
NSString *sn = NSStringFromSelector(a);
if ( [sn isEqualToString:methodName] ) {
[baseObject performSelector:a withObject:param afterDelay:0 ];
}
}