NSArray与NSMutableArray的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSArray与NSMutableArray的区别相关的知识,希望对你有一定的参考价值。

一直对ios里面的NSArray,NSMutableArray内容能更改和不能更改感到模糊,网上也找不到详细的说明,思考了一下,觉得可以用java里面的知识来解决!


    情况其实是这样的:NSArray创建之后会在堆中建立一块区域A,然后指针MoMo指向这块区域A,但是这块区域的大小是已经确定不能更改的了。但是我们还是能够看到有setobject的方法,可以向里面添加改变值。这是因为会在堆中在新建一个内存区域B,把原来堆内存A中的数据复制到这个堆区域B中,然后在这个新的区域B里面添加你setobject进去的值,并把栈中的指针对象MoMo指向B。这样就是说原来A的对内存值没有发生变化,但是你的指针MoMo在指向新的内存区域B之后指针对应的值已经变化了。因为B中有A的复制内容,还有最后你新添加进去(setobject)的值。

以上是关于NSArray与NSMutableArray的区别的主要内容,如果未能解决你的问题,请参考以下文章

iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong

iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong

数组使用的注意事项

NSMutableArray和NSArray的相互转换

iOS for 和 forin 的区别 以及注意事项

如何将NSArray排序的NSStrings拆分为NSMutableArray的NSMutableArray