iOS中数组的优化

96
反调唱唱
2018.01.21 22:47* 字数 238

先写些结论,有空了再分析

iOS使用了类簇模式,比如数据创建NSArray和NSMutableArray时都是通过__NSPlacehodlerArray实现的。

只是在alloc时出来的__NSPlacehodlerArray相关16字节,并且在应用里任何地方NSArray *arr =
[NSArray alloc]都相同,所有的不可变数组alloc创建的都一样,同样可变数组的也都一样。

并且对所有长度为0的不可变数组,地址都一样。

同样对于NSDictionary也是类似原理,但是NSString不一样

image.png
image.png

ps:记得在老版本中测试的时候[NSArray arrayWithArray:array1]得到的array和原array并不是一块内存,当时还疑惑为什么不使用同一对象,都是不可变的,使用同一对象没有任何问题,还可以节约内存。看来是后来苹果也觉得是可以这样优化的。

日记本