一 、实现
runtime在注册类时,会布局一个weak表(hash表),key是所指对象的地址,value是weak指针的地址的数组;当对象释放时,层层调用后,通过arr_clear_deallocating释放;
二、weak实现原理步骤:通过clang可以分析源码;
objc_initWeak//初始化weak;
objc_storeWeak()//修更新指针指向,创建对应的弱引用表;
clearDeallocating//通过key找到weak数组,然后对数组里的weak指针置nil,把这个entry(入口,记录)从weak表删除;