iOS runtime运行时详解

什么是runtime?

runtime直译就是运行时间,run(跑,运行) time(时间),网上大家都叫它运行时,它是一套比较底层的纯C语言API,属于一个C语言库,包含了很多底层的C语言API,它是OC的幕后工作者,我们平时写的OC代码,在运行过程时,都会转为runtime的C语言代码

runtime有什么用?

如果你之前不知道runtime,可能觉得它没什么用,其实他的作用非常强大.下面我们就以代码的形式为大家揭开runtime的神秘面纱

作用1  获取一个类全部成员变量名(如果你的成员私有,也可以获取到)

我们新建一个Person类,.h代码如下

24E6D740-14ED-4483-912D-AA675C87C23B.png

这些成员变量都是公有的,我们直接点开头文件就可以看到,如果是系统的类呢,你是不是就不知道类里面有哪些成员了,利用runtime可以轻松解决这个问题,现在我们来测试一下,记得要加 #import 

E29E193D-97EA-4D7D-8BA8-88BBB9F17F5F.png

打印结果

694E976C-DD22-4770-9FA4-98B89C4C680C.png

你可以试一下,把所有的成员放到.m文件里面,它打印的结果是一样的.

作用2  同理,我们可以获取到一个类的全部属性名

0A0504F7-FACB-4C2B-8D9C-C0A59D7FBDEE.png

打印结果:

29601516-8E4F-4C98-896D-863541F9CFBC.png

作用3 获取一个类的全部方法

5635D473-40DC-45AA-9522-9732563E6556.png

打印结果:

C057CCB2-5931-4325-99A8-4FCA10339CA1.png

我们可以看到所有的方法

作用4 获取一个类遵循的所有协议

先将遵循的协议给注释掉

721FB3C1-C646-4D96-9EAC-F5B7205F25F3.png

测试代码

0B6EA858-DF32-4ADF-9607-DC9A3A305482.png

结果啥都没有打印出来

E0457045-9F61-40C2-9600-E5614BD0FA61.png

我们把遵循的代码注释给打开

再执行测试代码,打印结果

E98B1187-E559-42B9-9E56-9A06B5B05020.png

是不是很棒,你可能觉得貌似用处不太大,那接下来我们来看看如何利用runtime归档和解档.

作用5 归档/解档D4DE7A8E-3ED3-4972-A165-7FDA0D8C2D9F.png测试如下:03EDB689-05E0-41F6-B9DF-46722D4DB274.png


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值