iOS - 通过runtime获取某个类中所有的变量和方法
来源:互联网 发布:php.ini session 设置 编辑:程序博客网 时间:2024/06/05 01:16
苹果官方的类中只提供给我们一小部分成员变量和方法,但有时候我们需要的恰好就没有提供,这样就会令开发人员十分懊恼了,那怎样才能获取该类中所有的变量及方法,用来查找是否有相对应的变量和方法呢?
我们可以使用苹果自带的 运行时(runtime) 来获取
运行时(Runtime):
* 苹果官方一套C语言库
* 能做很多底层操作(比如访问隐藏的一些成员变量\成员方法....)
以下以 UITextField 为例
一. 包含运行时头文件
#import <objc/runtime.h>二. 获取所有的成员变量
unsigned int count = 0; // 拷贝出所胡的成员变量列表 Ivar *ivars = class_copyIvarList([UITextField class], &count); for (int i = 0; i<count; i++) { // 取出成员变量 Ivar ivar = *(ivars + i); // 打印成员变量名字 LXFLog(@"%s", ivar_getName(ivar)); // 打印成员变量的数据类型 LXFLog(@"%s", ivar_getTypeEncoding(ivar)); } // 释放 free(ivars);
三. 获取所有的成员方法
// 下面的UITextField改为你想获取所有属性的类名
// methCount: 这个类所有属性的个数
unsigned int methCount = 0; Method *meths = class_copyMethodList([UITextField class], &methCount); for(int i = 0; i < methCount; i++) { Method meth = meths[i]; SEL sel = method_getName(meth); const char *name = sel_getName(sel); NSLog(@"%s", name); } free(meths);
最后,通过KVC的方式给相应的成员变量赋值即可!
如:
// 修改点位文字颜色 UILabel *placeholderLabel = [self valueForKeyPath:@"_placeholderLabel"]; placeholderLabel.textColor = [UIColor redColor]; // 或者这样 [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
0 0
- iOS - 通过runtime获取某个类中所有的变量和方法
- RunTime应用--获取类中所有的私有变量,属性,和方法
- ios 通过runtime 获取类对象的所有子类
- Runtime获取一个类中所有成员变量的名字和类型
- runtime 系列-2获取类的所有特征(属性,实例变量,方法)
- 通过标准的Runtime API(C函数)打印UIKit中UIView的所有变量、属性以及方法
- 通过runtime获取一个类的所有属性
- 通过运行时获取某个类下所有的属性
- 通过反射获取类的所有属性和方法
- iOS OC中获取100以内的所有合数,获取某个合数的所有因数.
- 获取继承某个接口的所有方法
- ios tableview didSelectRowAtIndexPath方法中,获取某个cell的实例
- Java-读取某个目录下所有文件、文件夹和3种从文件路径中获取文件名的方法
- iOS 获取一个类的所有方法
- iOS 获取一个类的所有方法
- python 通过类中一个方法获取另一个方法变量
- 获取Java类中所有的方法和属性
- 通过Runtime获取私有方法
- 比较两个字符串是否为变位词
- iOS 去掉导航栏下面黑线 —— HERO博客
- Android Studio图文安装教程
- 浅谈设计模式之简单工厂模式、工厂模式、抽象工厂模式
- yum源的更新
- iOS - 通过runtime获取某个类中所有的变量和方法
- 你需要知道的 Android6.0 权限相关
- Codevs 1080 线段树练习(线段树&&树状数组&&分块&&CDQ分治)
- DT大数据梦工厂Spark 定制班笔记(002)
- 关于jspsmartupload 中文各种乱码的解决方法
- 重装系统后,硬盘分区丢失的解决办法
- 存储过程管理过程
- base64编码
- 一些技术大牛的博客集锦(转)