深复制与浅复制的理解
来源:互联网 发布:java 余弦相似度算法 编辑:程序博客网 时间:2024/05/16 15:16
-,浅复制,当我们用copy方法拷贝不可变对象,或者mutableCpoy拷贝可变对象时,为新对象分配了内存空间,对象默认为浅复制,只是复制了指针地址,所有两者还是指向同一个对象,当一个对象值改变时,另一个对象的值会跟着改变。
二,深复制,为原对象复制一份一模一样的新对象,并且相互之前没有影响,
要用到NSCopying协议和NSMutableCopying协议
NSCopying协议:
- (id)copyWithZone:(nullableNSZone *)zone;
NSMutableCopying:
- (id)mutableCopyWithZone:(nullableNSZone *)zone;
@interface person ()<NSCopying,NSMutableCopying>
#pragma mark---NSCopying
-(id)copyWithZone:(NSZone *)zone{
person *newPerson = [[selfclass] allocWithZone:zone];
newPerson.name =_name;
newPerson.age =_age;
return newPerson;
}
#pragma mark--NSMutableCopying
- (id)mutableCopyWithZone:(nullableNSZone *)zone{
person *newPerson = [[selfclass] allocWithZone:zone];
newPerson.name =_name;
newPerson.age =_age;
return newPerson;
}
使用:person *per = [[personalloc] init];
per.name =@"zhangsan";
per.age =12;
person *new = [percopy];
new.name =@"lisi";
new.age =13;
per和new占有不同的内存空间,相互没有影响。
- 深复制与浅复制的理解
- 对C++中深复制与浅复制的理解
- 深复制与浅复制的理解之续集
- ArrayList 的深复制与浅复制
- C++的深复制与浅复制
- 浅复制与深复制的区别
- 对象的浅复制与深复制
- 深复制与浅复制的区别
- c++的浅复制与深复制
- js理解__深复制与浅复制
- $.extend() 深复制与浅复制深刻理解
- 我对 js的深复制与浅复制 的理解
- 浅复制与深复制
- 浅复制与深复制
- 深复制与浅复制
- 浅复制与深复制
- 深复制与浅复制
- 深复制与浅复制
- linux 遇到的问题
- 用一个for循环实现矩阵的转置
- oracle 固定执行计划(一)之 sql_profile
- Android WebView 安全漏洞解决方案
- Java中int和integer区别
- 深复制与浅复制的理解
- Sublime text2的注册码破解
- java栈 函数如何调用
- http禁用缓存、文件下载
- 【Java基础知识】扩展的赋值运算符隐含着强转
- Android中触摸事件MotionEvent的来源
- ERROR SparkContext: Error initializing SparkContext. java.lang.IllegalArgumentException: System memo
- 使用golang快速开发微信公众平台(一):开启服务器配置
- 排序算法之桶排序