OC对象在内存中的存储
4B2B0A7DAC2B140C722CCF7D8DFE99F6.pngARC下对象的管理
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)。
网友评论