NSArray 底层实现
2020-04-24 本文已影响0人
reboot_q
- NSMutableArray 是一个类簇 - 具体实现实际上是其子类
__NSArrayM
通过hooper
@interface __NSArrayM : NSMutableArray
{
unsigned long long _used;
unsigned long long _doHardRetain:1;
unsigned long long _doWeakAccess:1;
unsigned long long _size:62;
unsigned long long _hasObjects:1;
unsigned long long _hasStrongReferences:1;
unsigned long long _offset:62;
unsigned long long _mutations;
id *_list;
}
-
__NSArrayM 使用了环形缓冲区(Circular buffer). 这个数据结构相当简单, 只是比常规数组和缓冲区复杂点. 环形缓冲区的内容能在到达任意一端时绕向另一端.
环形缓冲区在任意一端插入或删除均不会要求移动任何内存(除非缓冲区满了) -
__NSArrayM 特性
http://blog.joyingx.me/2015/05/03/NSMutableArray%20%E5%8E%9F%E7%90%86%E6%8F%AD%E9%9C%B2/