NSArray 底层实现

  • 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/

你可能感兴趣的:(NSArray 底层实现)