美文网首页
Dealloc的原理

Dealloc的原理

作者: MJBaby | 来源:发表于2020-05-22 11:52 被阅读0次
    1、Dealloc调用流程
    • 首先调用_objc_rootDealloc()
    • 接下来调用rootDealloc()
    • 判断是否可以被释放
    • NONPointer_ISA
    • weakly_refrence
    • has_assoc
    • has_cxx_dtor
    • has_sidetable_rc
    • 如果有以上五种任意一种,将会调用object_dispose()
      如果没有以上的情况,则可以执行释放操作,C函数的free()
    • 执行完毕
    2、object_dispose()调用流程
    • object_destructInstance()
    • 调用C函数的free()
    3、object_destructInstance()调用流程
    • 先判断has_cxx_dtor,如果有C++的相关内容,要调用object_cxxDestruct(),销毁C++相关的内容
    • 再判断hasAssocitated,如果有的话,要调用object_remove_associations(),销毁关联对象的一系列操作
    • 调用clearDeallocating()
    • 执行完毕
    4、clearDeallocating()调用流程
    • 执行sideTable_clearDeallocting()
    • 执行weak_clear_no_lock,在这一步骤中,会将指向该对象的弱引用指针置为nil
    • 执行table.refcnts.eraser(),从引用计数表中移除该对象的引用计数
    • 执行完毕

    相关文章

      网友评论

          本文标题:Dealloc的原理

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