最近了解了 NSMutableArray 的原理,通过这篇文章了解到了其原理,这次我就将原文的 ARM64 讨论部分省略,对 NSMutableArray 的原理进行自己的总结描述。
##C语言中的数组

也是我们常说的,当数组需要插入时,都需要对插入的下标后的数组的元素进行移动。同时删除元素也是如此
这种情况下,如果数组中的元素特别多,就会非常的耗时,那么我们使用 OC 中的 NSMutableArray 进行上述操作时,会不会也和传统的数组一样?
##OC 中的NSMutableArray
NSMutableArray 与 NSArray 的差别就在 Mutable(易变的)
通过某些方法我们得到了 NSMutableArray 类的 ivars,如下
@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 _muta

本文探讨了NSMutableArray与NSArray的区别,重点解析了NSMutableArray如何通过圆形缓冲区实现元素的添加和删除,包括fetchOffset的计算和_size、_user、_offset的调整。在两端操作时,避免了传统数组的元素移动,提高了效率。而对于中间位置的操作,由于不是链表结构,仍然需要移动元素,但会优化操作次数。
最低0.47元/天 解锁文章
744

被折叠的 条评论
为什么被折叠?



