runtime如何实现weak属性

首先了解weak是一种非拥有关系,属性所值对象销毁时,属性值会清空(nil).

Runtime对注册的类会进行布局,对于weak对象会放入hash表中,用weak指向的内存地址作为key,当对象引用计数器为0时会dealloc,假如weak指向的对象内存地址为a,那么就会以a为键,在这个weak表中搜索,找到以a为键的weak对象,从而设置为nil.

猜你喜欢

转载自www.cnblogs.com/huangzs/p/10536784.html