美文网首页selector
weak的实现原理

weak的实现原理

作者: 凯文Kevin21 | 来源:发表于2020-09-25 11:14 被阅读0次

    总结: Runtime会维护一个weak表,用于维护指向对象的所有weak指针。weak表是一个哈希表,其key为所指对象的指针,value为weak指针的地址数组。
    具体过程如下:

    1、初始化时:runtime会调用objc_initWeak函数,初始化一个新的weak指针指向对象的地址。
    2、添加引用时:objc_initWeak函数会调用 objc_storeWeak() 函数,更新指针指向,创建对应的弱引用表。
    3、释放时,调用clearDeallocating函数。clearDeallocating函数首先根据对象地址获取所有weak指针地址的数组,然后遍历这个数组把其中的数据设为nil,最后把这个entry从weak表中删除,最后清理对象的记录。

    参考:iOS 底层解析weak的实现原理-简书

    相关文章

      网友评论

        本文标题:weak的实现原理

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