美文网首页
2. 动态交换两个方法的实现

2. 动态交换两个方法的实现

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

Teacher: What's your name?

XiaoMing: My name is XiaoMing.

Teacher: Pardon?

XiaoMing: My name is __

在程序当中,假设XiaoMing的第一次回答为firstSay,后来被Runtime交换了一个名字叫secondSay的方法,最终再调用firstSay的时候,其实是调用了secondSay的实现。那么,Runtime是如何做到的呢?

2)Step:

①动态找到firstSay和secondSay方法

Method m1 = class_getInstanceMethod([self.xiaoMing class], @selector(firstSay));

Method m2 = class_getInstanceMethod([self.xiaoMing class], @selector(secondSay));

②交换两个方法

method_exchangeImplementations(m1, m2);

3)Show Code:

-(void)answer{

Method m1 = class_getInstanceMethod([self.xiaoMing class], @selector(firstSay));

Method m2 = class_getInstanceMethod([self.xiaoMing class], @selector(secondSay));

method_exchangeImplementations(m1, m2);

NSString *secondName = [self.xiaoMing firstSay];

self.nameTf.text = secondName;

NSLog(@"XiaoMing:My name is %@",secondName);

}

相关文章

  • runtime(给分类增加属性)

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

  • 2. 动态交换两个方法的实现

    Teacher: What's your name?XiaoMing: My name is XiaoMing.T...

  • Runtime 使用场景

    使用场景: 动态交换两个方法的实现 method_exchangeImplementations 替换系统方法,做...

  • 有了这些ios面试技巧,公司任你进

    利用runtime 可以做一些OC不容易实现的功能 1,动态交换两个方法的实现(特别是交换系统自带的方法) 2,动...

  • Runtime的常见使用总结+Demo

    常见使用: runtime 常见的使用有:动态交换两个方法的实现、实现分类也可以添加属性、实现NSCoding的自...

  • Runtime实例运用-交换方法实现、Method Swizzl

    一.交换两个方法的实现: Runtime还可以交换两个方法的实现。例如:Person有两个方法:study、run...

  • Runtime积累

    一、Runtime 可以做的是事情1、实现多继承2、交换两个方法的实现3、关联对象4、动态创建方法和类5、将 Js...

  • iOS hook webviewdelegate && 继承关系

    主要有两个注意事项1.判断方法是否被交换过,已经交换过就不再重复交换 2.判断交换的对象为方法实现的类,不要在继承...

  • Runtime

    runtime运行时机制1:通过runtime,实现方法交换(交换两个类方法、交换两个实例方法)2:通过runti...

  • 知识梳理

    一、你在项目中用过 runtime 吗?举个例子。 a、Method Swizzling动态交换方法实现,实则交换...

网友评论

      本文标题:2. 动态交换两个方法的实现

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