weak实现原理
2018-11-09 本文已影响0人
老七没问题
weak实现原理
1.初始化时,runtime调用objc_initweak函数,初始化一个新的weak指针,指向对象的地址
2.添加引用时,objc_initweak函数,会调用objc_storeweak函数,objc_storeweak函数的作用是更新指针指向,创建对应得弱引用表
runtime调用objc_initweak初始化一个weak指针。指向对象地址,调用objc_store更新指针指向,创建弱引用表
3,释放时调用clear deallocation函数,根据对象地址没获取所有weak指针地址的数组,然后遍历这个数组,把其中的数据设为nil,最后把这个entry从weak表中删除,清理对象记录