出于内存原因,NSMutableArray比NSArray更好吗?

Vik*_*ngh 7 memory-management objective-c nsmutablearray nsarray ios

我有一个关于NSArray和NSMutableArray的问题.我理解两者之间的区别主要是NSArray是不可变的,NSMutableArray是可变的.就我的研究而言,性能也是一样的.有一件事我找不到一个好的答案,那就是NSMutableArray使用的内存比NSArray多,如果NSMutableArray在某种程度上比NSArray更苛刻.

我真的很感激建议和解释.

谢谢Vik

Cat*_*Man 13

NSMutableArray为两个(呃,四个,请参阅注释)使用稍多的内存:

1)因为它可以改变大小,它不能将内容存储在对象内,并且必须存储指向外部存储的指针以及存储的额外malloc节点

2)因为在添加内容时一次调整一个元素的速度非常慢,所以它会以块的形式调整大小,这可能会导致一些未使用的空间.

  • 3)因为当你向`NSArray`的一个实例发送`copy`消息时,它会返回`self`而不是实际创建一个新实例.这可能会节省一些内存消耗和/或对象分配/释放. (3认同)
  • 啊,是的,好的电话.另外4)由于2,它必须单独跟踪容量和计数. (2认同)