美文网首页
iOS OC类结构class分析

iOS OC类结构class分析

作者: kaijiemu | 来源:发表于2021-03-02 16:17 被阅读0次

一,我们平时写的oc文件可以通过clang编译生成底层cpp文件,可以清楚看到类在底层的结构

iPhoneSimulator.sdk根据你xcode的版本修改

clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk xxx.m

二,我们知道类在底层就是结构体objc_class,通过查看objc源码,来看下类的结构

1,继承objc_object,objc_object结构体里有ISA指针,所有所有类都有ISA指针
2,superclass ,父类指针
3,cache,缓存
4,bits,类方法,协议,属性等
5,data(),通过该方法获取bits的具体内容

struct objc_class : objc_object {
    // Class ISA;
    Class superclass;
    cache_t cache;             // formerly cache pointer and vtable
    class_data_bits_t bits;    // class_rw_t * plus custom rr/alloc flags

    class_rw_t *data() const {
        return bits.data();
    }
    void setData(class_rw_t *newData) {
        bits.setData(newData);
    }

    void setInfo(uint32_t set) {
        ASSERT(isFuture()  ||  isRealized());
        data()->setFlags(set);
    }

    void clearInfo(uint32_t clear) {
        ASSERT(isFuture()  ||  isRealized());
        data()->clearFlags(clear);
    }
    .......
}

相关文章

  • 类结构之cache分析

    背景 前面我们在分析ios类结构过程,在oc类结构那点事(四)中我们了解到class有几个关键属性,其中bits信...

  • iOS OC类结构class分析

    一,我们平时写的oc文件可以通过clang编译生成底层cpp文件,可以清楚看到类在底层的结构 iPhoneSimu...

  • cache_t 原理分析

    在前面 iOS 类的结构分析 分析了 objc_class 的 bits, 今天我们来分析 objc_class ...

  • iOS类结构:cache_t分析

    一、cache_t 内部结构分析 1.1 在iOS类的结构分析中,我们已经分析过类(Class)的本质是一个结构体...

  • iOS 类原理探索:类的结构分析

    OC 类原理探索 系列文章 OC 类原理探索:类的结构分析 OC 类原理探索:类结构分析补充[https://ju...

  • iOS底层之cache_t探究

    我们在iOS底层之类的结构分析分析了类的内部结构,而类的C/C++底层实际是objc_class结构体,其中包含了...

  • objc_class结构体中cache_t分析

    前面的文章分析了OC类的结构构体实现,了解了objc_class结构体中有几个主要成员分别是isa、supercl...

  • OC底层原理06-cache_t探究

    iOS--OC底层原理文章汇总 前言 本文主要探索cache_t * cache结构内容,分析它在类的结构中扮演了...

  • iOS Class结构分析

    objc_class结构体 类在OC中是objc_class的结构体指针 typedef struct objc_...

  • OC底层原理10-cache_t分析(插入流程)

    在 OC底层原理07-类的结构分析 这篇文章中,我们研究了objc_class中的superclass、bits,...

网友评论

      本文标题:iOS OC类结构class分析

      本文链接:https://www.haomeiwen.com/subject/aghxqltx.html