用法详见ZJRTextFiled
什么是runtime?
1>runtime是一套底层的C语言API(包括很多实用的C语言类型,C语言函数);
2>实际上,平时我们编译的OC代码,底层都是基于runtime实现的
. 也就是说,我们平时编写的OC代码, 最终都是转成了底层的runtime代码(C语言代码);
/**
运行时(runtime):
苹果官方一套C语言库
能做很多底层操作(比如访问隐藏的一些成员变量\成员方法...)
*/
runtime有啥用?
1>能动态生成一个类,一个成员变量, 一个方法
2>能动态修改一个类,一个成员变量,一个方法
3>能动态删除一个类,一个成员变量,一个方法
// 查找变量基本方法
+ (void)getIvars {
unsigned int count = 0;
// 拷贝出所有的成员变量列表
Ivar *ivars = class_copyIvarList([/*self*/UITableView class], &count);
for (int i = 0; i < count; i ++) {
// 取出成员变量
// Ivar ivar = *(ivars + i);
Ivar ivar = ivars[i];
// 打印成员变量的名字
ZJRLog(@"%s %s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));
}
// 释放
free(ivars);
}
// 查找属性基本方法
+ (void)getProperties {
unsigned int count = 0;
objc_property_t *properties = class_copyPropertyList([UITextField class], &count);
for (int i = 0; i < count; i ++) {
// 取出属性
objc_property_t property = properties[i];
// 打印属性名
ZJRLog(@"%s <----> %s", property_getName(property), property_getAttributes(property));
}
// 释放
free(properties);
}