使用反射达到不引用头文件间接使用类方法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Class clas=NSClassFromString(@"person");
if (clas) {
NSLog(@"clas这个类存在");
SEL sel=NSSelectorFromString(@"requesturl:asdjl:");
if ([clas instancesRespondToSelector:sel]) {
NSLog(@"该方法被映射了");
NSObject *objc=[[clas alloc]init];
if ([objc respondsToSelector:sel]) {
[objc performSelectorOnMainThread:sel withObject:@"hello" waitUntilDone:YES];
}
}else
{
NSLog(@"该方法没有被映射");
}
}else{
NSLog(@"clas这个类存在");
}
Class clas1=NSClassFromString(@"pers1on");
if (clas1) {
NSLog(@"clas1这个类存在");
}else{
NSLog(@"clas1这个类不存在");
}
}
return 0;
}
引用类头文件
#import <Foundation/Foundation.h>
@interface person : NSObject
-(void)requesturl:(NSString *)str asdjl:(BOOL)yes;
@end
引用类的实现文件
#import "person.h"
@implementation person
-(void)requesturl:(NSString *)str asdjl:(BOOL)yes
{
NSLog(@"传值成功 str:%@",str);
}
日志
2015-01-26 10:04:17.409 反射[658:303] clas这个类存在
2015-01-26 10:04:19.781 反射[658:303] 该方法被映射了
2015-01-26 10:04:19.782 反射[658:303] 传值成功 str:hello
2015-01-26 10:04:19.783 反射[658:303] clas1这个类不存在