美文网首页
dealloc的调用流程

dealloc的调用流程

作者: Mr_wick | 来源:发表于2021-05-17 18:21 被阅读0次

1、调用_objc_rootDealloc()
2、调用rootDealloc()
3、判断是否被释放,依据如下情况:
a、NONPointer_ISA
b、weakly_reference
c、has_assoc
d、has_cxx_dtor
e、has_sidetable_rc

如果 无以上情况:直接free()。如果有:则调object_dispose()方法

object_dispose()调用流程如下:

1、调用objc_instructInstance()
2、free()

objc_instructInstance()调用流程如下:

1、判断hasCxxDtor,如果有c++内容,则调用object_cxxDestruct()销毁C++内容
2、判断hasAssociatedObjects,如果有,则调用object_remove_associations()销毁关联对象
3、clearDeallocating()
4、结束

clearDeallocating()调用流程如下:

1、sideTable_clearDeallocating()
2、weak_clear_no_lock将弱指针置nil
3、table.refcnts.eraser()从引用计数表擦除该对象的引用计数
4、结束

相关文章

网友评论

      本文标题:dealloc的调用流程

      本文链接:https://www.haomeiwen.com/subject/ofajjltx.html