OC反汇编

2019-02-06  本文已影响6人  king_jensen

OC对象在内存中的存储

4B2B0A7DAC2B140C722CCF7D8DFE99F6.png

ARC下对象的管理

1932485EAE43B8E756060F3D3C312635.png

汇编中,编译器调用了objc_storeStrong方法,在objc源码中,查看该方法的实现

void
objc_storeStrong(id *location, id obj)
{
    id prev = *location; 
    if (obj == prev) {
        return;
    }
    objc_retain(obj);
    *location = obj;
    objc_release(prev);
}

实现很简单,首先和之前的引用相比判断是不是同一个引用,是的话就return;否则的话就对obj对象进行retain,并且释放location之前的引用(也就是说location指针不再指向之前的对象,要把之前对象引用计数减1)。

上一篇下一篇

猜你喜欢

热点阅读