iOS 上hash的内容

2022-02-22  本文已影响0人  helinyu

1、关联属性的实现

AssocationHashMap 和 objectAssocationMap 都是哈希表。
以前:AssociationsHashMap 是基于
class AssociationsHashMap : public unordered_map

1> AssociationsHashMap : DisguisedPtr(object) 为key, (key [绑定的key] +(值+ 策略)) 为value。
2> ObjectAssociationMap: key [绑定的key] ,(值+ 策略)

2、weak 的实现

weak的目的: 对象销毁的时候, 自动置为nil, 减少访问野指针的风险。

步骤:
1> 对象dealloc的时候,从全局的hashMap中,根据一个唯一的对象key, 找到存储所有指向该对象的weak指针的数组
2> 将数组中的所有元素都置为nil。

3、KVO实现使用的基本数据结构

key:@[被观察的对象数组]

4、ios App 签名的原理

一致性哈希算法 + 非对称加解密算法

5、对象的引用计数存储的位置

具体实现

if 对象支持TaggedPointer {
    return 直接将对象的指针值作为引用计数返回
} 
else if 设备是64位环境 && Objective-C2.0 {
    return 对象isa指针的一部分空间(bits_extra_rc)
}
else {
    return hash表
}

6、Runloop与线程的存储关系

(key:value) = (thread: runloop_obj)

7、NSDictionary原理

里面直接使用了hash算法

参考

有时间看一下unordered_map/map 和DenseMap 之间的区别 。 为什么iOS需要协议个新稠密map替换?

上一篇下一篇

猜你喜欢

热点阅读