刚才接触IOS的时候,类型员属性,常喜欢使用copy,retain,assign等来设置对某个成员变量的setter,getter方法。
后来发现某些对象copy是不行的。需要自己进行实现COPY。这就有点像C++中的深,浅COPY。
简单复制只能实现浅拷贝:指针赋值,使两个指针指向相同的一块内存空间,操作不安全。
在IOS中可以这样来实现。
Foundation类已经遵守了<NSCopying>和 <NSMutableCopying>协议,即实现了copy和mutableCopy方法,因此Foundation对象可以使用这些方法创建对象的副本或可变副本
协议原型:
@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
对要实现拷贝对象的复制操作。用户自定义类遵守<NSCopying>协议和<NSMutableCopying>协议,则必须实现copyWithZone方法和mutableCopyWithZone方法,否则该类对象无法响应copy和mutableCopy消息 。
@interface ptrObj: NSObject<NSCopying>
.m中实现
- (id)copyWithZone:(NSZone *)zone
{
//实现代码,按照需要进行实现。
}