美文网首页
iOS NSArray | NSMutableArray使用必看

iOS NSArray | NSMutableArray使用必看

作者: 山杨 | 来源:发表于2018-04-02 17:02 被阅读12次
    一个已经有内容的可变数组: 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

    相关文章

      网友评论

          本文标题:iOS NSArray | NSMutableArray使用必看

          本文链接:https://www.haomeiwen.com/subject/scfxhftx.html