运用SEL,运行时改变两个方法的实现
来源:互联网 发布:c语言输出*等腰三角形 编辑:程序博客网 时间:2024/06/03 08:37
直接上代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. Method m1 = class_getInstanceMethod([self class], @selector(testExchange1)); Method m2 = class_getInstanceMethod([self class], @selector(testExchange2)); IMP impM1 = method_getImplementation(m1); IMP impM2 = method_getImplementation(m2); [self testExchange1]; [self testExchange2]; method_setImplementation(m2, impM1); method_setImplementation(m1, impM2); [self testExchange1]; [self testExchange2];}- (void) testExchange1 { NSLog(@"%s", __func__);}- (void) testExchange2 { NSLog(@"%s", __func__);}
输出:
2015-11-02 13:54:12.646 02-runtime[2592:71972] -[ViewController testExchange1]2015-11-02 13:54:12.647 02-runtime[2592:71972] -[ViewController testExchange2]2015-11-02 13:54:12.648 02-runtime[2592:71972] -[ViewController testExchange2]2015-11-02 13:54:12.649 02-runtime[2592:71972] -[ViewController testExchange1]
另外还可以用method_exchangeImplementations 运行时交换两个方法的实现,原文链接请点击
0 0
- 运用SEL,运行时改变两个方法的实现
- 运行时中函数调用黑魔法swizzle,交换两个方法或者改变一个方法的实现
- runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用
- C19_OC09-方法的类型SEL
- OC学习笔记06--OC运行时中类的加载、初始化 和方法调用机制,SEL类型
- 改变canvas背景的两个方法
- 运用两个栈实现队列
- 运用Python实现多种排序的方法
- 一个网页分三个框架,点一个里的链接可以同时改变另两个页内容的实现方法!
- 实现线程的两个方法
- 运行时组件及其方法的实现
- java运行时多态性的实现方法
- 改变NUnit运行的thread apartment mode的方法
- 改变滚动视图的方法实现
- description方法和SEL
- description方法和SEL
- 程序运行过程中动态改变控件大小的方法
- 调用类的时候使用的类方法和SEL
- 关于权限的通用设计
- oracle复制表
- HDOJ--1495--非常可乐(隐式图)
- T检验与F检验的区别(通俗理解)
- Virtualbox WDDM 用户模式显示驱动之vboxWddmDispGetCaps
- 运用SEL,运行时改变两个方法的实现
- C# 微信企业号--管理素材文件
- JavaScript中类和构造函数的理解
- mac 系统office软件
- LeetCode---Path Sum II
- 如何获取清单文件AndroidManifest中meta_data元素的信息
- Java 命名空间的由来和引入
- python-swap函数复制与赋值
- 强命名程序集