美文网首页
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);
        }
        .......
    }
    

    相关文章

      网友评论

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

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