美文网首页
iOS的ARC是怎么工作的

iOS的ARC是怎么工作的

作者: xiaoliang1 | 来源:发表于2021-03-08 13:09 被阅读0次

    一般都是来搞定的objc_storeStrong,他的函数声明代码这样的

    void * objc_storeStrong(void * addr, void * value) 
    

    反汇编代码:

    截屏2021-03-08 13.00.09.png

    大概代码

    // addr 属性指针的地址   value 对象的地址 (刚new出来时retainCcount  = 1);
    void * objc_storeStrong(void ** addr, void * value) {
    
        if (value == addr) {
            return addr;
        }
    
        void *tmp = *addr;
    
        addr = value;
        objc_retain(*addr);  +1
        addr = objc_release(tmp); //释放原来的
    
        return addr;
    }
    

    1;所以就不释放了;
    当你是只new 一个对象时 addr 就为NULL了。
    此时objc_retain(NULL);
    最后在release一次就释放了;
    一般,你只需要new alloc 等操作。objc_storeStrong会自动生成在汇编代码里。

    @interface ViewController ()
    @property(nonatomic,strong)NSObject *objct;
    @property(nonatomic,assign)NSObject *object2;
    @property(nonatomic,weak)NSObject *object3;
    @end
    

    像这种会在自动生成的set 方法调用objc_storeStrong 或者weak 等函数

    相关文章

      网友评论

          本文标题:iOS的ARC是怎么工作的

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