OC反汇编

OC对象在内存中的存储

OC反汇编_第1张图片
4B2B0A7DAC2B140C722CCF7D8DFE99F6.png

ARC下对象的管理

OC反汇编_第2张图片
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)。

你可能感兴趣的:(OC反汇编)