iphone 深拷贝,NSCopying
来源:互联网 发布:手机淘宝修改评价内容 编辑:程序博客网 时间:2024/05/21 20:07
直接写代码:
头文件:
Member类,实现了深拷贝。
VIPMember类,是Member的子类,继承了Member的深拷贝协议。但VIP需要实现copyWithZone函数来实现拷贝。
@interface Member : NSObject<NSCopying>{ NSString *_name;}@property(nonatomic, retain)NSString *name;@end@interface VIPMember : Member { NSString *_vipPhone;}@property (nonatomic, retain)NSString *vipPhone;@end
实现文件:
@implementation Member@synthesize name=_name;- (NSString*)description{ return [NSString stringWithFormat:@"<Member>{name:%@}", self.name];}- (void)dealloc{ [_name release];}- (id)copyWithZone:(NSZone *)zone{ Member * member = [[self class] allocWithZone:zone]; member.name = _name; return member;}@end@implementation VIPMember@synthesize vipPhone=_vipPhone;- (NSString*)description{ NSString * str = [NSString stringWithFormat:@"<VIPMember>{member:%@,vipPhone:%@}",[super description], self.vipPhone]; return str;}- (void)dealloc{ [_vipPhone release]; [super dealloc];}- (id)copyWithZone:(NSZone *)zone{ VIPMember * vipMember = [super copyWithZone:zone]; vipMember.vipPhone = _vipPhone; return vipMember;}@end
调用的方法:
VIPMember * member1 = [[VIPMember alloc] init]; member1.name = @"wang"; member1.vipPhone = @"13422223333"; VIPMember * member2 = [member1 copy]; member2.name = @"zhang"; member2.vipPhone = @"13200009999"; NSLog(@"member1:%d, member2:%d", [member1 retainCount], [member2 retainCount]); NSLog(@"member1:%@", member1); NSLog(@"member2:%@", member2);
输出的日志:
member1:1, member2:1
member1:<VIPMember>{member:<Member>{name:wang},vipPhone:13422223333}
member2:<VIPMember>{member:<Member>{name:zhang},vipPhone:13200009999}
- iphone 深拷贝,NSCopying
- <NSCopying>和 <NSMutableCopying>协议 深拷贝 浅拷贝
- 对象的拷贝(NSCopying/NSMutableCopying)
- Objective-c下的深拷贝、浅拷贝以及NSCopying协议
- bruceyou1990-iOS学习日记-Objective-C深拷贝浅拷贝和NSCopying协议
- 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)
- NScopying
- <NSCopying>
- NSCopying
- NSCopying
- deep copy 深拷贝 iOS iPhone
- deep copy 深拷贝 iOS iPhone
- Objective-C深复制和<NSCopying>协议
- iphone开发内存管理之三──深拷贝和浅拷贝
- iphone开发内存管理之三──深拷贝和浅拷贝
- iphone开发内存管理之──深拷贝和浅拷贝
- 19 NSCopying与NSMutableCopying协议+深复制和浅复制
- Objective-C 深复制和浅复制与<NSCopying>协议
- Gentoo Linux ALSA指南
- NOPI获取行数,列数,自动调整列宽
- 如何使用DirectDraw直接显示YUV视频数据
- ms sql Server过滤字符串首尾字符
- Android GPS架构分析
- iphone 深拷贝,NSCopying
- Android 桌面组件【widget】初探
- linux下安装log4cxx
- ieframe.dll\1未找到
- SQL Server 2008中SQL之WaitFor
- linux fdisk命令详解
- 新来 csdn 。说说关于csdn验证码错误的问题。
- java 向上取整
- 网友博客收藏