先写些结论,有空了再分析
iOS使用了类簇模式,比如数据创建NSArray和NSMutableArray时都是通过__NSPlacehodlerArray实现的。
只是在alloc时出来的__NSPlacehodlerArray相关16字节,并且在应用里任何地方NSArray *arr =
[NSArray alloc]都相同,所有的不可变数组alloc创建的都一样,同样可变数组的也都一样。
并且对所有长度为0的不可变数组,地址都一样。
同样对于NSDictionary也是类似原理,但是NSString不一样


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