反射弧概念
程序可以访问、检测和修改它本身状态或行为的一种能力。
OC反射弧
OC的反射机制,即在动态运行状态下可以构造任意一个类或对象,知道这个类的所有属性和方法。
- NSStringFromClass()
NSString * className = NSStringFromClass([self class]);//类反射成字符
- NSClassFromString()
Class class = NSClassFromString(@"ViewControlller");//字符反射成类
- NSSelectorFromString()
SEL sel = NSSelectorFromString(@"buttonEventTimeInterval");//方法名的字符形式反射为方法
- NSStringFromSelector()
NSString * selStr = NSStringFromSelector(sel);//方法反射为字符
- 获取一个类的所有属性
unsigned int count;
Ivar * ivars = class_copyIvarList([self class], &count);
for (int i = 0; i < count; i ++) {
Ivar ivar = ivars[i];
NSLog(@"%@", [NSString stringWithFormat:@"%s", ivar_getName(ivar)]);
}
free(ivars);
- 获取一个类的所有方法
unsigned int count;
Method * methods = class_copyMethodList([self class], &count);
for(int i = 0; i < count; i ++){
SEL sel = method_getName(methods[i]);
NSLog(@"%d----%s\n",i, sel_getName(sel));
}
free(methods);
网友评论