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替换?
网友评论