runtime整理:什么是runtime,带你初步了解runtime

来源:互联网 发布:剑网3七秀捏脸数据 编辑:程序博客网 时间:2024/05/16 08:40

runtime简单的认识

我所理解的runtime是一个使用C编写的库,为C添加了面向对象的特性,它是一个库(Runtime Library中文:运行时库).在这个库中可以用C函数来实现方法,对象也可以用C语言的结构体来表示…所有oc的方法的背后都是通过runtime来运行的.

查看<objc/objc.h>

1.OC中的对象是一个objc_object类型的结构体

struct objc_object {
    Class isa  OBJC_ISA_AVAILABILITY;
};

id是一个objc_object类型的指针

typedef struct objc_object *id;

2.OC中的类是一个objc_class类型的结构体

struct objc_class{    Class isa OBJC_ISA_AVAILABILITY;    #if !__ OBJC2__    Class super_class    const char *name    long version    long info    long instance_size    struct objc_ivar_list    struct objc_method_list *methodLists    struct objc_cache *cache    struct objc_protocol_list *protocols    #endif    }OBJC2_UNAVAILABLE

3.isa是一个指向objc_class结构体的指针
(1)对于objc_object,其isa指向的是对象对应的类
(2)对于objc_class,其isa指向的是类对应的类-元类(metaclass)

4.常用类型
1.

<objc/objc.h>SEL,IMP

2.

<objc/runtime>Method,Ivar,Category,Protocol

3.

<objc/message>
0 0