您的位置:首页 > 运维架构

16.copy与mutableCopy

2016-02-19 21:04 295 查看

实现拷贝的方法

copy

只会产生不可变的副本对象(比如NSString)

mutableCopy

只会产生可变的副本对象(比如NSMutableString)



自定义对象的拷贝

自定义对象要实现拷贝操作需要

1.遵守
NSCopying
协议

@interface XMGPerson()    <NSCopying>
@end


2.内部实现
- (id)copyWithZone:(NSZone *)zone
方法

- (id)copyWithZone:(NSZone *)zone
{
Person *person = [[Person allocWithZone:zone] init];
person.age = self.age;
person.money = self.money;
return person;
}


属性
property
中copy描述

1.

@property (nonatomic, copy) NSString *name;
//本质上实现的set方法为
- (void)setName:(NSString *)name
{
_name = [name copy];
}
如@property (nonatomic, strong)NSString *name;
//本质上实现的set方法为
- (void)setName:(NSString *)name
{
_name = name;  //直接赋值
}


2.当 @property (nonatomic, copy) NSMutableString *name;这里用
copy
描述不合适,因为
copy
描述时name属性值永远是不可变,若外部文件使用name属性时,可能调用NSMutableString的方法,程序会出错,所以这里定义为NSMutableString是不合理的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nsstring