runtime自学日记

1.runtime 是什么

runtime 就是运行时。

2.为什么要有runtime

根据OC的特性“消息发送机制”【object message】,代码可以在运行的时候做任意更改也就是说在运行的时候可以添加新的属性可以删除已有的属性那么我们怎么去实现运行时来做任何我们想做的事呢。

3.runtime 可以把上面的问题解决。那又回到了问题runtime是什么runtime 就是 系统 给我们提供的 一组 API 让我们来可以 实现我们想做的事。

4.runtime 做的事 。

runtime 基本上(1)类的各个方面的动态配置(2)消息传递

5. 类是什么我们看代码可以发现类实际上就是一个结构体。其中包含


    Class _Nonnull isa 指向它的元类

#if !__OBJC2__

    Class _Nullable super_class                              父类;

    const char*_Nonnull name                              类名;

    long version                                            类版本;

    long info                                                类信息成员变量等;

    long instance_size                                      类的实例所占字节;

    struc tobjc_ivar_list *_Nullablei vars                  成员变量链表;

    struct objc_method_list *_Nullable*_NullablemethodLists                    类方法链表;

    struct objc_cache *_Nonnull cache                      方法缓存;

    struct objc_protocol_list *_Nullable protocols          协议链表;

isa 用来确定类所属的类,superclass 用来确定 实例对象的继承关系着就着急了元类的

清晰理解Objective-C元类 - CSDN博客

属性概念

SEL:类成员方法的指针,但不同于C语言中的函数指针,函数指针直接保存了方法的地址,但SEL只是方法编号。

IMP:一个函数指针,保存了方法的地址

Method:方法的结构体,其中保存了方法的名字,实现和类型描述字符串

OC学习Runtime之消息传递,消息转发机制 - CSDN博客

你可能感兴趣的:(runtime自学日记)