iOS开发-运行时机制runtime(交换方法)(二)

上一篇文章,我们比较偏理论的介绍了一下iOS运行时机制runtime,这一篇我们就来讲解一下runtime在实际开发中的应运场景。

利用runtime,交换两个方法的实现。什么意思?
顾名思义:方法1:method1 方法2:method2;在开发过程中,在利用runtime对这两个方法的实现进行交换前,我调用method1就会执行method1的实现代码;我调用method2就会执行method2的实现代码。当我们利用runtime交换method1与method2之后,调用method1就会执行method2的实现代码,调用method2就会执行method1的实现代码。
先简单看一下效果:
在工具类中先声明并实现这三个方法


1.png
2.png

在其他的类中调用截图如下:


3.png

下面我们从修改系统的类方法的角度来分析一下runtime交换方法的实现过程。需求:当我们调用[NSDate date]时,返回一个 @"yyy:MM:dd HH:mm:ss";格式且显示当前时间的字符串。这里我们的需求涉及到了改动系统的类方法,所以只能通过runtime实现。要记住:当我们需要修改、完善或者彻底替换系统的某个方法时,一般都会使用到runtime。
1.为NSDate添加分类并实现我们自己想要的效果

4.png

2.然后在load方法里面实现方法交换


5.png

// 思考:在我们自定义的方法的实现里面,我们用到了需要交换的方法[NSDate date],见图4,return那一行。你认为在这里应不应该这样写了?

正确截图:

6.png

demo链接:https://pan.baidu.com/s/1slm2g8X

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容