自定义数据结构的copy

比如,我自定义someData;

@interface someData : NSObject<NSCopying> {

    NSString *_aStr;

    UIColor *_aColor;

}



@property (nonatomic, copy) NSString *aStr;

@property (nonatomic, retain) UIColor *aColor;



@end



////



@implementation someData

@synthesize aStr = _aStr;

@synthesize aColor = _aColor;



-(void) dealloc {

    [_aColor release];

    [_aStr release];

    [super dealloc];

}



- (id)copyWithZone:(NSZone *)zone {

    someData *copy = [[[self class] allocWithZone:zone] init];

    [copy setAStr:_aStr];//调用setter,_aStr 拷贝 到 copy

    [copy setAColor:[UIColor colorWithCGColor:[_aColor CGColor]]];//生成一分新的color ,与_aColor地址不同

    return copy;

}

@end

实现 nscopying协议,实现copywithzone方法。

要注意:你是copy,所以,someData里面的成员变量, 其 成员变量 都应该保证有两份深拷贝,也就是 copy后的 成员变量内存地址为两份。

你可能感兴趣的:(数据结构)