OC中几个全局的表

403 阅读1分钟

1、 Weak表

全局的Hash表 : 存储所有weak 表示的对象,
每个对象对应着 所有指向该对象的  弱引用的指针,
当该对象被销毁的时候,这个对象的所有弱引用,将其置为 nil



2、关联对象表


多个 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是线程对象,valuerunloop对象

实现思路

1.  先判断这个全局字典存不存在,不存在,创建一个,并将主线程的runloop加进去
     直接去字典里取这个loop

2. 如果loop不存在,就创建一个loop加入到全局字典中