文档章节

copy & mutableCopy

马尔代夫的沙滩
 马尔代夫的沙滩
发布于 2016/02/01 20:45
字数 203
阅读 6
收藏 0

不可变对象执行不可变拷贝(copy)就是浅拷贝

如果执行拷贝时 只要有可变的无论是可变对象还是可变拷贝(mutableCopy)就是深拷贝

只有源对象和副本对象都不可变才是浅拷贝,其它都是深拷贝!

copy 创建的是不可变副本(NSString , NSArray, NSDictionary)

mutableCopy 创建的是可变副本 (NSMutableString, NSMutableArray, NSMutableDictionary)

shallow copy 浅拷贝(指针拷贝):相当于做了一次retain操作 引用计数器加1 没有产生新的对象  源对象和副本对象是同一个对象!

deep copy 深拷贝(内容拷贝):源对象和副本对象是两个不同的对象,源对象的计数器不变,副本对象计数器加1(产生了一个新的对象)

          


© 著作权归作者所有

共有 人打赏支持
下一篇: 什么是KVC
马尔代夫的沙滩
粉丝 11
博文 53
码字总数 20296
作品 0
海淀
程序员
私信 提问
IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解

阅读本文之前首先了解copy与retain的区别,如果有不正确的地方望大家多多指教: copy与retain的区别: copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。Copy属性表示两个对象内...

木木情深
2014/02/19
0
0
copy与mutableCopy

一、深拷贝和浅拷贝 深拷贝:对象拷贝 - 直接拷贝内容。 浅拷贝:指针拷贝 - 将指针中的地址值拷贝一份。 二、对于 Copy 与 mutableCopy 的实践 思路:我用四个方案来验证 Copy 与 mutableC...

JlongTian
2016/01/05
24
0
为什么copy不可以修饰可变数组

总结: 1:对于不可变对象,copy都是浅复制,即指针复制。mutableCopy 都是Alloc一个新对象返回。 2:对于可变对象,copy和mutableCopy都是Alloc新对象返回。 3:不论是可变还是不可变对象,...

Ethan-GOGO
2016/10/19
8
0
Objective-C浅拷贝和深拷贝

浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。如: char str = (char)malloc(100); char* str2 = str; 浅拷贝只是对对象的简单拷贝,让几个对象共用一片内...

大喵哥
2014/09/20
0
0
iOS开发之深复制和浅复制

非盈利无广告开发者专用网址导航:www.dev666.com 1、概述 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接拷贝整个对象...

feng_blog
2016/02/24
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

不学无数——SpringBoot入门IV

SpringBoot 1.Profiles Spring Profiles能够在不同的环境中使不同的应用配置生效。@Component和@Configuration两个注解都能够通过@Profiles来标记。下面是例子: @Configuration@Profile("b...

不学无数的程序员
14分钟前
1
0
nginx长连接出现504的解决办法

在http 中添加如下 fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s;...

hansonwong
14分钟前
0
0
记一次 Spring Boot多数据源 循环引用问题

如题,升级了一下mybatis版本后出现循环引用的问题。 具体异常如下 ***************************APPLICATION FAILED TO START***************************Description:The depen...

HeyS1
15分钟前
0
0
MongoDB Could not find host matching read preference { mode: \"primary\" } for set repl_shard1

最近在测试 MongoDB 4.0 分片集群 ,搭建好所有节点后,往mongos添加分片的时候,一直报错 Could not find host matching read preference { mode: \"primary\" } for set ,如下 mongos> sh...

xxj123gogo
19分钟前
0
0
linux安装java1.8

# tar -zxvf jdk-8u144-linux-x64.tar.gz vi /etc/profile export JAVA_HOME="/usr/local/java/jdk1.8.0_144" export CATALINA_HOME="/usr/local/tomcat/apache-tomcat-9.0.0.M22" export PA......

八戒八戒八戒
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部