iOS NSArray | NSMutableArray使用必看

一个已经有内容的可变数组: contentArray
需求: 创建一个新数组,内容和contentArray相同.
方式一:
  NSArray *otherArray = contentArray;
方式二: 
  NSArray *otherArray = [NSArray arrayWithArray:contentArray];

虽然看上去两种方式产生的otherArray的值相同,但如果[contentArray removeAllObjects]则:
方式一产生的otherArray内容会跟随contentArray一起变为空
方式二产生的otherArray内容依然存在

为什么会出现这样的问题呢?

方式一:
实际上是将`otherArray指针`指向了`contentArray指针`所指向的内容,从而使得他们有了相同的值. 
但如果他们指向的内容变化时, `otherArray`和`contentArray`会一起变化
方式二:
创建`otherArray`的时候使用的方法`[NSArray arrayWithArray:contentArray]`,通过Apple文档得知:
`Creates and returns an array containing the objects in another given array.`
可以明确的看出,用这种方式创建的数组是将`contentArray`中的内容添加到了`otherArray`中,
这样就使得`otherArray`中的每个对象都和`contentArray`相同,但两者的地址却不同,
从而不管哪一方数组变化(增加/减少),都不会影响到另一方.
需要注意的是:两个数组中的对象地址是相同的,说明如果修改了对象的内容,另一个数组中的内容也会变化.
赋值图.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们分手那天是3月7号,特别容易记因为再过两天就是我的生日。我没有告诉她,因为我不想拿我生日这件事来要挟她留在我身...
    喝过半杯西冷茶阅读 166评论 0 0
  • 送走了猴迎来了鸡,又到了新的一年。 今年我们全家回老家过年,一路上我们欣赏着沿途的风景,感受着自驾的乐趣,用了...
    杨智凯阅读 279评论 1 0
  • 从女儿房门前经过时,发现女儿的房间收拾的异常整齐。这太奇怪了。女儿15岁,追求时尚却不爱整洁,房间一向凌乱不堪。 ...
    诶静不天真阅读 152评论 0 0
  • 结婚第二天,姐姐突然晕倒,送到医院检查,肾萎缩,其中一只肾衰竭,多少人劝姐夫,才结婚就是如此大病走为上策,姐...
    静守流年_阅读 136评论 0 0