weak变量你如何让添加进弱引用表里面的
id __weak obj = obj;
编译后调用 objc_initWeak(&obj1,obj);
weak_register_no_lock
通过原对象的指针到若弱饮用表当中找到原来的对象的结构
总结:一个被声明为__weak 的对象指针 经过编译 调用 objc_initWeak(&obj1,obj); 最终在 weak_register_no_lock 来进行弱引用的添加到弱饮用表里面。1.是通过hash算法 来进行位置的计算,如果对应位置已经有了。我们会将新的对象添加进数组后面,如果没有我们会创建一个新的弱饮用的数组经第0的位置 后面都值为nil
当一个被废弃 weak对象 是被如何处理的
一个对象可能会有很多弱引用的指针
weak指针会被置为nil
weak_clear_no_lock
通过weak对象的指针经过hash算法计算 得到 当前对象 所有的弱引用数组 的位置
然后for循环 置为nil