如何使用copy功能?
一个对象可以调用copy或mutableCopy方法来创建一个副本对象。
copy:创建的时不可变副本(如NSString、NSArray、NSDictionary)。
mutableCopy:创建的可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)。
使用copy功能的前提:
copy:
需要遵守NSCopying协议,实现copyWithZone:方法.
@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end
mutableCopy:
需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法
@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end
深复制和浅复制的区别:
深复制(深拷贝/内容拷贝):
本质:产生了新对象。
特点:
1、源对象和副本对象是不同的两个对象;
2、源对象引用计数器不变,副本对象计数器为1(因为是新产生的)。
浅复制(浅拷贝/指针拷贝):
本质:没有产生新对象。
特点:
1、源对象和副本对象是同一对象;
2、源对象(副本对象)引用计数器+1,相当于做一次retain操作。
网友评论