有关 NSMutableArray 的原理

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近了解了 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;
    unsigne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值