浅拷贝,深拷贝---ios
#import <Foundation/Foundation.h> @interface Father : NSObject <NSCopying,NSMutableCopying>
@property (nonatomic,copy) NSString *name;
@property (nonatomic,retain) NSNumber *age;
-(id) initWithName:(NSString *)name withAge:(NSNumber *) age;
@end
#import "Father.h"
#import "Child.h" @implementation Father -(id) initWithName:(NSString *)name withAge:(NSNumber *) age{
self=[super init];
if(self!=nil){
_name=name;
_age=age;
}
return self;
}
//浅拷贝
-(id) copyWithZone:(NSZone *)zone{
Father *father=[[[self class] allocWithZone:zone] init];
father.name=_name;
father.age=_age;
return father;
} //深拷贝
- (id)mutableCopyWithZone:(NSZone *)zone{
Father *father=[[[self class] allocWithZone:zone] init];
father.name=[_name mutableCopy];
father.age=[_age copy];
return self;
}
NSLog(@"-------自定义对象浅拷贝---------");
//浅拷贝学习
Father *father=[[Father alloc] initWithName:@"caitou" withAge:[NSNumber numberWithInt:23]];
Father *father2=[father copy];
NSLog(@"对象地址:%p",father);
NSLog(@"对象地址:%p",father2);
NSLog(@"对象属性地址name:%p",[father name]);
NSLog(@"对象属性地址name:%p",[father2 name]);
NSLog(@"对象属性地址age:%p",[father age]);
NSLog(@"对象属性地址age:%p",[father2 age]); NSLog(@"--------自定义对象深拷贝---------");
//深拷贝
Father *father4=[[Father alloc] initWithName:@"caitou" withAge:[NSNumber numberWithInt:25]];
Father *father3=[father4 mutableCopy];
NSLog(@"对象地址:%p",father4);
NSLog(@"对象地址:%p",father3);
NSLog(@"对象属性地址name:%p",[father4 name]);
NSLog(@"对象属性地址name:%p",[father3 name]);
NSLog(@"对象属性地址age:%p",[father4 age]);
NSLog(@"对象属性地址age:%p",[father3 age]); NSLog(@"-------浅拷贝---------");
NSArray *array1=[[NSArray alloc] initWithObjects:@"sdf", nil];
NSArray *array2=[array1 copy];
NSLog(@"%p",array1);
NSLog(@"%p",array2); NSLog(@"-------深拷贝---------");
NSMutableArray *mutableArray=[NSMutableArray arrayWithObject:@"sdfdf" ];
NSMutableArray *mutableArray2=[mutableArray mutableCopy];
NSLog(@"%p",mutableArray);
NSLog(@"%p",mutableArray2);
//总结:当copy一个不可变对象时,相当有retain,即引用记数加一,其他情况copy,mutablecopy都会分配空间复制内容
浅拷贝,深拷贝---ios的更多相关文章
- JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘
一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实 ...
- $.extend()浅拷贝深拷贝
参考网址:http://bijian1013.iteye.com/blog/2255037 jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象. 注意:1. 如果只为$.ex ...
- Python__学习路上的坑之--引用,浅拷贝,深拷贝
copy : 相当于只是拷贝表面一层,如果里面还有深层次的引用,那么也是直接拷贝引用的地址,而且如果拷贝对象是不可变类型比如元组,那么也是直接拷贝引用. deepcopy: 无论是拷贝可变类型还是不可 ...
- Python中的浅拷贝 深拷贝
浅拷贝只拷贝父对象,子对象的地址空间不改变,包括下面三种: 1. copy 从下面的例子可以看出对象c从a拷贝,当对象a增加一个列表元素之后,c对象没有改变, 而当对象a中的子列表改变时,对象c的子列 ...
- 浅拷贝 &&&深拷贝 实现
1.浅拷贝 //1.直接赋值给一个变量 //浅拷贝 //2.Object.assign() //浅拷贝 let obj4={} let obj5={money:50000} obj4.__proto_ ...
- javascript浅拷贝深拷贝详解
一.浅拷贝 浅拷贝在现实中最常见的表现在赋值上面,例如 <!DOCTYPE html> <html lang="en"> <head> < ...
- js库 - 浅拷贝 & 深拷贝
学了堆栈内存空间,应该就理解了什么叫简单数据类型存在栈内存,复杂数据类型存在堆内存了. 然后面试中经常会问.业务中也经常会遇到的问题就是深浅拷贝的问题了. 栈内存中简单数据类型直接拷贝就能得到一个副本 ...
- PythonStudy1——Python 值拷贝 浅拷贝 深拷贝
拷贝:对值进行复制的过程 # 值拷贝:应用场景最多 ls = [1, 'abc', [10]] ls1 = ls # ls1直接将ls中存放的地址拿过来 # ls内部的值发生任何变化,ls1都会随 ...
- python中赋值-浅拷贝-深拷贝之间的关系
赋值: 变量的引用,没有拷贝空间 对象之间赋值本质上 是对象之间的引用传递而已.也就是多个对象指向同一个数据空间. 拷贝的对象分两种类型: . 拷贝可变类型 浅拷贝: 只拷贝第一层数据,不关心里面的第 ...
- javascript浅拷贝深拷贝理解记录
javascript的深拷贝和浅拷贝问题几乎是面试必问的问题.好记性不如烂笔头,特此来记录一下自己对深拷贝浅拷贝的理解. 顾名思义,拷贝就是copy复制,在js中可以浅而理解为对一个对象或者数组的复制 ...
随机推荐
- Ubuntu 14.10 下MySQL无法远程连接问题
安装好MySQL之后,如果需要远程连接,那么需要做一些配置,否则会出现一些类似的错误,如 mysql root用户ERROR (): mysql 远程登录 ERROR () mysql 远程登录200 ...
- 用云存储和CDN轻松搞定网站图片
http://www.kuqin.com/web/20120207/317912.html
- mysql锁表机制及相关优化
(该文章为方便自己查阅,也希望对大家有所帮助,转载于互联网) 1. 锁机制 当前MySQL支持 ISAM, MyISAM, MEMORY (HEAP) 类型表的表级锁,BDB 表支持页级锁,InnoD ...
- 英文VS2010安装中文版MSDN文档方法
英文VS2010安装中文版MSDN文档方法 2010-06-01 11:52 by 李永京, 51409 阅读, 50 评论, 收藏, 编辑 在2010年4月12号发布Visual Studio 20 ...
- Difference Between Performance Testing, Load Testing and Stress Testing
http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/ Differen ...
- Nginx启动出错 error while loading shared libraries:
在centos5.7 32位上编译安照 nginx-1.1.16 出错 [root@localhost conf]# /usr/local/nginx/sbin/nginx/usr/local/ngi ...
- java NIO-我们到底能走多远系列(39)
献给各位: Satisfied MindRed Hayes and Jack RhodesHow many times have you heard someone say,"If I ha ...
- hdu 2665 Kth number
划分树 /* HDU 2665 Kth number 划分树 */ #include<stdio.h> #include<iostream> #include<strin ...
- HOG参数简介及Hog特征维数的计算(转)
HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize( ...
- raido 赋值第一次成功,然后就赋值不显示
$("#id").attr("checked",true); //显示出现问题,第一次成功 $("#id").prop("chec ...