文档章节

关于copy

Sniper_Tei
 Sniper_Tei
发布于 2015/07/02 15:38
字数 389
阅读 7
收藏 0

NSMutableArray* a = [NSMutableArray arrayWithObjects:@"123",@"345", nil];

NSMutableArray* b = [NSMutableArray arrayWithObjects:@"xyz",@"abc", nil];

NSArray *c = [NSArray arrayWithObjects:a, b, nil];

NSArray *d = [c copy];

    for (NSArray* arr in d) {

        for (NSString* s in arr) {

            NSLog(@"element: %@", s);

        }

    }

    

    a[0] = @"haha";

    

    for (NSArray* arr in d) {

        for (NSString* s in arr) {

            NSLog(@"element: %@", s);

        }

    }

结果:

2015-07-02 13:53:00.112 Test[15564:327797] element: 123

2015-07-02 13:53:00.112 Test[15564:327797] element: 345

2015-07-02 13:53:00.112 Test[15564:327797] element: xyz

2015-07-02 13:53:00.112 Test[15564:327797] element: abc

2015-07-02 13:53:00.112 Test[15564:327797] element: haha

2015-07-02 13:53:00.112 Test[15564:327797] element: 345

2015-07-02 13:53:00.112 Test[15564:327797] element: xyz

2015-07-02 13:53:00.113 Test[15564:327797] element: abc

******************************************

NSMutableArray* a = [NSMutableArray arrayWithObjects:@"123",@"345", nil];

 NSMutableArray* b = [NSMutableArray arrayWithObjects:@"xyz",@"abc", nil];

 NSArray *c = [NSArray arrayWithObjects:a, b, nil];

// SEE the difference.

NSArray *d = [c copyDeeply];

    for (NSArray* arr in d) {

        for (NSString* s in arr) {

            NSLog(@"element: %@", s);

        }

    }

    

    a[0] = @"haha";

    

    for (NSArray* arr in d) {

        for (NSString* s in arr) {

            NSLog(@"element: %@", s);

        }

    }

结果:

2015-07-02 13:53:47.111 Test[15596:328543] element: 123

2015-07-02 13:53:47.112 Test[15596:328543] element: 345

2015-07-02 13:53:47.112 Test[15596:328543] element: xyz

2015-07-02 13:53:47.112 Test[15596:328543] element: abc

2015-07-02 13:53:47.112 Test[15596:328543] element: 123

2015-07-02 13:53:47.112 Test[15596:328543] element: 345

2015-07-02 13:53:47.112 Test[15596:328543] element: xyz

2015-07-02 13:53:47.112 Test[15596:328543] element: abc


copy只做第一级的深拷贝。 如果array里面存的是指针,它就会把指针值做深拷贝,等于是后面的数组跟前面的数组,存的指针值是一样的,但是指针指向的内容不做深拷贝,所以改了指针指向的内容,会同时影响两个数组。

© 著作权归作者所有

上一篇: 导航栏,状态栏
下一篇: 观察者
Sniper_Tei
粉丝 0
博文 5
码字总数 1404
作品 0
大连
私信 提问
理解 Python 引用、浅拷贝和深拷贝

在阐述引用、浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity、type 和 value。 引用(Reference) 浅拷贝(Shallow copy) 深拷贝(Deep copy) Ref...

koala bear
2013/08/16
0
0
关于@property后面修饰符详解   

@property后面有哪些修饰符 1.线程安全的 atomic、nonatomic 2.访问权限的 readonly、readwrite 3.内存管理(ARC) assign、strong、weak、copy 4.内存管理(MRC) assign、retain、release...

北方人在上海
2016/09/13
48
0
opencv-3.0.0在Ubuntu14.04下的配置与安装

original url: http://blog.csdn.net/surgewong/article/details/39078251 每次学习新东西或者换新的电脑,最让人头疼的就是环境的安装了。网上有一大堆教程,不过总地来讲,比较混乱,有些甚...

junmuzi
2015/11/17
0
0
PostgreSQL 与 MSSQL(SQL Server) 之间 数据相互迁移、导入、导出测试

标签 PostgreSQL , ms sql , SQL Server 背景 测试表结构 从 PostgreSQL 导入 MSSQL MS SQL bcp与BULK INSERT都不支持stdin,所以我这里使用落地到文件的方法,从PostgreSQL导入MS SQL。 1、...

德哥
04/14
0
0
ios开发详细解析copy和mutableCopy

在日常开发中,很多时候都会用到copy和mutableCopy,但是大家是否真正了解copy过程中内存发生了什么?copy是深拷贝还是浅拷贝呢?什么时候用copy?什么时候用mutableCopy?有什么区别? 探索前我们需...

Aracya
2018/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS--function

一、声明提前(hoist) 在js程序开始执行前,引擎会查找所有var声明的变量和function声明的函数,集中到当前作用域顶部集中创建,赋值留在原地 二、三种创建函数的方式 1、声明方式创建函数-...

wytao1995
今天
4
0
微服务之间调用控制器注解类型的差异

今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大...

不再熬夜
今天
7
0
用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
今天
6
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
今天
5
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部