1、 Weak表
全局的Hash表 : 存储所有weak 表示的对象,每个对象对应着 所有指向该对象的 弱引用的指针,
当该对象被销毁的时候,这个对象的所有弱引用,将其置为
nil2、关联对象表
多个 AssociationsManager对象
1个静态变量AssociationsHashMap
key : 对象的地址反码 , Value :map表
map表中: 关联key : ObjcAssociation对象的值
根据关联策略决定 是否对查询到的value进行retain操作或autorelease
3、AutoReleasepool
AutoreleasePool并没有单独的结构,而是由若干个AutoreleasePoolPage以双向链表的形式组合而成(分别对应结构中的parent指针和child指针)
一个AutoreleasePoolPage的空间被占满时,会新建一个AutoreleasePoolPage对象,连接链表,后来的autorelease对象在新的page加入
4、Runloop
线程与runloop一一对应的关系runloop 是 一个 结构体 是对象。
runloop对象是储存在一个全局字典中的,这个全局字段的key是线程对象,value是runloop对象实现思路
1. 先判断这个全局字典存不存在,不存在,创建一个,并将主线程的runloop加进去
直接去字典里取这个loop
2. 如果loop不存在,就创建一个loop加入到全局字典中