ios - 出于内存原因,NSMutableArray 是否比 NSArray 更好?

标签 ios objective-c memory-management nsmutablearray nsarray

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

非常感谢您的建议和解释。

谢谢 维克

最佳答案

NSMutableArray 使用稍微多一点的内存有两个(呃,四个,看评论)原因:

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

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

关于ios - 出于内存原因,NSMutableArray 是否比 NSArray 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493302/

相关文章:

iphone - UINavigationController 后退按钮位置

ios - UIViewAnimation setAnimationDidStopSelector 未声明的选择器,会崩溃吗?

objective-c - 在 UIWebView 中构建我自己的图像查看器 - 替换网页中的 Flash 图像播放器

objective-c - 我应该在返回对象之前发送 retain 或 autorelease 吗?

ios - 对 iOS 上 SpriteKit 中的坐标、框架和子节点感到困惑?

ios - 使用 MapBox iOS SDK 和 colorize-alpha 的热图

ios - 在基本项目中使用 GPUImage 实时视频过滤器会导致纯白屏幕

iphone - 协议(protocol)中的协议(protocol)是否可以被视为包含它们采用的协议(protocol)?

c++ - 内存错误及相关

c++ - 有没有办法在 C++ 中调用 new 时获取堆栈跟踪?