iOS面试题

iOS面试题:对runtime的理解

2020-12-07  本文已影响0人  iOS心安

概念

Objective-C是基于C语言加入面向对象特性和消息转发机制的动态语言,这就是说它不仅需要一个编译器,还需要Runtime系统动态的创建类和对象,进行消息发送和转发。

我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @selector(doSomething));

OC中一切都被设计成了对象,我们都知道一个类被初始化成一个实例,这个实例是一个对象。实际上一个类本质上也是一个对象,在runtime中用结构体表示。

runtime是OC的底层,它就是一套纯C语言的API。那说到这,OC可以运行代码runtime肯定能运行,runtime可以运行的程序在OC下未必能够运行。

为什么要熟悉掌握Runtime机制?

Runtime 在实际开发中,会经常用到吗?这个答案是肯定的。但是Runtime用的好不好在于理解程度,理解的好代码质量高效实用;用的不好,容易自己造坑。在实际开发中,我并不是推荐大家熟悉灵活的运用底层的东西,而是熟悉知道底层的运行机制。要不已经封装好看又好用的API干啥使。

Runtime 具体都干啥使用?

比如:动态添加属性、动态添加方法、方法交换、字典模型转换

参考文章: https://www.jianshu.com/p/6fd68ac84701

上一篇 下一篇

猜你喜欢

热点阅读