OC采用引用计数器对内存进行管理,当一个对象的引用计数(retainCount)为0,则被释放。
谁持有(retain)谁释放(release)。retain引用计数+1,release反之。
可以看出retain底层是调用了sidetable_retain()
通过代码可以出,SideTable拥有一个自旋锁,一个引用计数map。这个引用计数的map以对象的地址作为key,引用计数作为value
release过程:查找map,对引用计数减1,如果引用计数小于阈值,则调用SEL_dealloc
网友评论