Skip to content

Latest commit

 

History

History
8 lines (6 loc) · 781 Bytes

weak原理.md

File metadata and controls

8 lines (6 loc) · 781 Bytes

􏵁􏶰􏲑􏳀如何实现weak

定义了一种非拥有的关系,为属性设置新值时,set方法既不持有新值,也不释放旧值。

原理:当一个对象被weak指针指向时,这个weak指针会以对象为key,储存到sideTable类的weak_table散列表对应的一个weak指针数据组里面,当这个对象的dealloc方法出发时,runtime会以objkey,从这个散列表中,将weak指针逐个置为nil

key: weak指向对象的内存地址 value:所有指向该对象的weak指针表。

􏰹􏰁 􏴠􏰊􏱛􏲋􏵀􏲖􏵸􏰆􏰄􏵂􏴯􏵎􏴯􏴰􏳻􏰐􏳍􏱛􏵸􏰆􏰄􏵂􏴯􏵎􏰳􏱁􏲋􏵀􏱏􏵂􏰆􏶉􏰐􏲪􏲫􏲂 􏴠􏰊􏱛􏲋􏵀􏲖􏵸􏰆􏰄􏵂􏴯􏵎􏴯􏴰􏳻