内存

objc_object & objc_class

2019-03-08  本文已影响0人  介和

参考: https://www.jianshu.com/p/8ea1e5169d7a   《objc源码解析-ObjectiveC对象结构》

参考:https://blog.csdn.net/u013378438/article/details/80493158  《基本数据结构:objc_object & objc_class》

struct class_rw_t {

    // Be warned that Symbolication knows the layout of this structure.

    uint32_t flags;

    uint32_t version;

    const class_ro_t *ro;        // 类不可修改的原始核心

    // 下面三个array,method,property, protocol,可以被runtime 扩展,如Category

    method_array_t methods;

    property_array_t properties;

    protocol_array_t protocols;

    // 和继承相关的东西

    Class firstSubclass;

    Class nextSiblingClass;

    // Class对应的 符号名称

    char *demangledName;

// 以下方法省略

...

}

struct class_ro_t {

    uint32_t flags;

    uint32_t instanceStart;

    uint32_t instanceSize;

#ifdef __LP64__

    uint32_t reserved;

#endif

    const uint8_t * ivarLayout;

    const char * name;

    method_list_t * baseMethodList;

    protocol_list_t * baseProtocols;

    const ivar_list_t * ivars;

    const uint8_t * weakIvarLayout;

    property_list_t *baseProperties;

    method_list_t *baseMethods() const {

        return baseMethodList;

    }

};

上一篇下一篇

猜你喜欢

热点阅读