selector

weak的实现原理

2020-09-25  本文已影响0人  凯文Kevin21

总结: 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的实现原理-简书

上一篇 下一篇

猜你喜欢

热点阅读