iOS - Runtime 获取属性列表 方法列表 成员变量列表 协议列表

转载 2016年06月01日 18:26:40

导入头文件

#import <objc/runtime.h>

#warning Runtime learning 运行时测试使用(记得导入头文件)
- (void)runtimeTest {
    unsigned int count;
    
    //获取属性列表
    objc_property_t *propertyList = class_copyPropertyList([self class], &count);
    for (unsigned int i=0; i<count; i++) {
        const char *propertyName = property_getName(propertyList[i]);
        NSLog(@"property----="">%@", [NSString stringWithUTF8String:propertyName]);
    }
    
    //获取方法列表
    Method *methodList = class_copyMethodList([self class], &count);
    for (unsigned int i; i<count; i++) {
        Method method = methodList[i];
        NSLog(@"method----="">%@", NSStringFromSelector(method_getName(method)));
    }
    
    //获取成员变量列表
    Ivar *ivarList = class_copyIvarList([self class], &count);
    for (unsigned int i; i<count; i++) {
        Ivar myIvar = ivarList[i];
        const char *ivarName = ivar_getName(myIvar);
        NSLog(@"ivar----="">%@", [NSString stringWithUTF8String:ivarName]);
    }
    
    //获取协议列表
    __unsafe_unretained Protocol **protocolList = class_copyProtocolList([self class], &count);
    for (unsigned int i; i<count; i++) {
        Protocol *myProtocal = protocolList[i];
        const char *protocolName = protocol_getName(myProtocal);
        NSLog(@"protocol----="">%@", [NSString stringWithUTF8String:protocolName]);
    }
}

runtime 获取类的属性,方法,成员变量,以及协议 字典转model 总结

runtime 的使用笔记 1 runtime 获取类的属性,方法,成员变量,以及协议 unsigned int count; //获取属性列表 objc_property_t *pr...

在构造函数的参数化列表中调用基类构造函数初始化继承来的成员变量

今天有人问道:在实例子类对象时,会先调用父类的构造函数,然后再调用子类的构造函数。可为什么在有些子类中构造函数的参数化列表中还要调用父类的构造函数?先看下面代码:[cpp] view plain co...
  • zzwdkxx
  • zzwdkxx
  • 2016年11月28日 18:12
  • 354

C++为什么用初始化列表初始化类的成员变量

class Author { public: Author(); Author(const string &name); private: string name_; }; Author::...
  • liqb036
  • liqb036
  • 2015年01月25日 17:58
  • 237

在构造函数的参数化列表中调用基类构造函数初始化继承来的成员变量

今天有人问道:在实例子类对象时,会先调用父类的构造函数,然后再调用子类的构造函数。 可为什么在有些子类中构造函数的参数化列表中还要调用父类的构造函数? 先看下面代码: class Base ...
  • bdss58
  • bdss58
  • 2014年10月21日 18:03
  • 2178

类成员变量初始化列表(Member Initialization List)

1) 类成员初始化列表的顺序是很重要的 #include using namespace std;  class MemberInitializationList { private: ...
  • wjeson
  • wjeson
  • 2011年11月29日 15:38
  • 674

C++成员变量初始化列表和变量初始化顺序

一、成员变量初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。 class foo { public:...

C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别

一般我们进行成员变量初始化用两种方法 第一种是通过在构造函数内赋值 class Point { public:  Point(){ _x = 0; _y = 0;};  Point...

初始化列表成员变量的初始化

对于以下程序:#include using namespace std;class Base { private: int a; int b; public: ...
  • will130
  • will130
  • 2015年10月10日 21:55
  • 335

C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别

一般我们进行成员变量初始化用两种方法 第一种是通过在构造函数内赋值 class Point { public: Point(){ _x = 0; _y = 0;}; Point( ...

C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别

一般我们进行成员变量初始化用两种方法 第一种是通过在构造函数内赋值 class Point { public:  Point(){ _x = 0; _y = 0;};  Point...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS - Runtime 获取属性列表 方法列表 成员变量列表 协议列表
举报原因:
原因补充:

(最多只允许输入30个字)