美文网首页
1. 动态的添加对象的成员变量和方法

1. 动态的添加对象的成员变量和方法

作者: Alanxx | 来源:发表于2017-02-24 15:12 被阅读0次

1. 动态变量控制

1)Sense:

Teacher: What's your name?

XiaoMing: My name is XiaoMing.

Teacher: Pardon?

XiaoMing: My name is __

在程序当中,假设XiaoMing的name原来的值为XiaoMing,后来被Runtime偷换了一个名字叫Minggo。那么,Runtime是如何做到的呢?

2)Step:

①动态获取XiaoMing类中的所有属性[当然包括私有]

Ivar *ivar = class_copyIvarList([self.xiaoMing class], &count);

②遍历属性找到对应name字段

const char *varName = ivar_getName(var);

③修改对应的字段值成Minggo

object_setIvar(self.xiaoMing, var, @"Minggo");

3)Show Code:

-(void)answer{

     unsigned int count = 0;

     Ivar *ivar = class_copyIvarList([self.xiaoMing class], &count);

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

           Ivar var = ivar[i];

           const char *varName = ivar_getName(var);

           NSString *name = [NSString stringWithUTF8String:varName];

           if ([name isEqualToString:@"_englishName"]) {

                       object_setIvar(self.xiaoMing, var, @"Minggo");

                       break;

              }

     }

     NSLog(@"XiaoMing first answer is %@",self.xiaoMing.englishName);

     self.nameTf.text = self.xiaoMing.englishName;

}

相关文章

  • runtime(给分类增加属性)

    常用的地方 1. 动态交换两个方法的实现(特别是实现 交换系统方法的实现) 2. 动态添加对象的成员变量和成员方法...

  • react 对象动态添加属性 setState

    // js 对象动态添加 js对象动态添加 //总结,给对象动态添加变量属性的方法如下: //obj[变量]=变...

  • 二十一:Python之动态添加属性方法

    一:动态添加属性方法 动态添加属性:类属性,成员属性 动态添加方法:成员方法,类方法,静态方法 动态添加对象方法需...

  • 1. 动态的添加对象的成员变量和方法

    1. 动态变量控制 1)Sense: Teacher: What's your name?XiaoMing: My...

  • Runtime

    objc对象内存布局 对象:所有父类的成员变量和自己的成员变量类对象:其中存放着普通成员变量列表与动态方法(“-”...

  • runtime的使用二

    动态添加方法 替换方法 方法交换 获取成员变量,属性,以及方法

  • iOS - Runtime

    整理了一下网上的一些Runtime的资料 并集中了一下 1. 动态的添加对象的成员变量和方法 2. 动态交换两个方...

  • 【Objective-C Runtime动态加载】---动态创建

    动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用obj...

  • OC语言之category_关联对象的本质源码解析

    关联对象 能否给分类添加"成员变量"? 使用关联对象技术为分类添加"成员变量" 关联对象添加的"成员变量"添加到了...

  • 「Objective-C」类和方法

    1. 类方法和对象方法 对象方法 减号 - 开头 只能由对象来调用 对象方法中能访问当前对象的成员变量(实例变量)...

网友评论

      本文标题:1. 动态的添加对象的成员变量和方法

      本文链接:https://www.haomeiwen.com/subject/yjdwwttx.html