面试题:内存管理机制

OC采用引用计数器对内存进行管理,当一个对象的引用计数(retainCount)为0,则被释放。

谁持有(retain)谁释放(release)。retain引用计数+1,release反之。

可以看出retain底层是调用了sidetable_retain()
通过代码可以出,SideTable拥有一个自旋锁,一个引用计数map。这个引用计数的map以对象的地址作为key,引用计数作为value

release过程:查找map,对引用计数减1,如果引用计数小于阈值,则调用SEL_dealloc

你可能感兴趣的:(面试题:内存管理机制)