iOS-runtime-总结

2022-07-03  本文已影响0人  笑破天

1、runtime简介
C是面向过程的。OC是面向对象的,是C的超集,在C的基础上多了封装、继承和多态等特性。简单来说,OC比C多了面向对象+动态性。

OC语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。OC的动态性是由runtime来支撑和实现的。

这种特性意味着OC不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于OC来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即Objc Runtime。Objc Runtime其实是一个Runtime库,简称运行时,是一套比较底层的纯C语言API,将数据类型的确定或方法的具体实现由编译时推迟到了运行时。平时编写的OC代码(方法调用),底层都是转换成了Runtime API(objc_msgSend)进行调用。

2、OC的消息机制
分三步:方法查找、动态解析、消息转发
https://www.jianshu.com/p/7d06997b202a

3、内存结构
https://www.jianshu.com/p/50dc78f77741

4、应用举例
https://www.jianshu.com/p/dfbc30443aaf
FlutterTextView

5、其他
super和weak:https://www.jianshu.com/p/48f43bfc3a0e
NSProxy:https://www.jianshu.com/p/8f99b5ba9407

上一篇下一篇

猜你喜欢

热点阅读