运用SEL,运行时改变两个方法的实现
2015-11-02 13:57
411 查看
直接上代码:
输出:
另外还可以用method_exchangeImplementations 运行时交换两个方法的实现,原文链接请点击
- (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 运行时交换两个方法的实现,原文链接请点击
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Java Runtime Environment 5.0 Update 12 下载
- php set_magic_quotes_runtime() 函数过时解决方法
- Asp.Net 程序错误Runtime Error原因与解决
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- System 类 和 Runtime 类的常用用法介绍
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件