• 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


  • 相关阅读:
    提交一个spark程序及spark执行器
    前端如何让服务器主动向浏览器推送数据
    h5页面移动端iPhoneX适配方法
    详说tcp粘包和半包
    mysql配置文件 /etc/my.cnf 详细解释
    【todo】MVCC原理及与锁之间的关系
    【todo】innodb表锁的底层实现原理
    【todo】innodb行锁的底层实现原理
    【todo】mysql binlog
    [todo] spring 事务的传播性
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7372647.html
Copyright © 2020-2023  润新知