您的位置:首页 > 移动开发 > IOS开发

iOS运行时获取对象的成员变量和成员方法

2014-01-28 14:20 381 查看
1、包含运行时头文件

#import <objc/runtime.h>

2、获取某个类的成员变量或则属性;

unsigned
int numIvars;
//成员变量个数

Ivar *vars =
class_copyIvarList(NSClassFromString(@"UIView"), &numIvars);

//Ivar *vars = class_copyIvarList([UIView class], &numIvars);

NSString *key=nil;

for(int i =
0; i < numIvars; i++) {

Ivar thisIvar = vars[i];

key = [NSString
stringWithUTF8String:ivar_getName(thisIvar)];
//获取成员变量的名字

NSLog(@"variable name :%@", key);

key = [NSString
stringWithUTF8String:ivar_getTypeEncoding(thisIvar)];
//获取成员变量的数据类型

NSLog(@"variable type :%@", key);
}

free(vars);

3、获取成员函数

Method *meth =
class_copyMethodList(NSClassFromString(@"UIView"), &numIvars);

//Method *meth = class_copyMethodList([UIView class], &numIvars);

for(int i =
0; i < numIvars; i++) {

Method thisIvar = meth[i];

SEL sel = method_getName(thisIvar);

const char *name =
sel_getName(sel);

NSLog(@"zp method :%s", name);

}

free(meth);

例子中使用的UIView类可以替换成任何自定义的类。更多函数查看<objc/runtime.h> !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: