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

深拷贝,浅拷贝与copy,strong

2015-09-09 10:03 447 查看
深.浅拷贝

copy mutableCopy NSString



copy mutableCopy NSMutableString



结论:



注意:其他对象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一样适用



copy NSObject

崩溃:



看崩溃信息HSPerson应该先实现:

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

测试



可以看出copyWithZone重新分配新的内存空间,则:



虽然copy了份新的对象,然而age,height值并未copy,那么:



这时你会想,有NSMutableCopying?没错,是有这货:

NSCopying、NSMutableCopying有啥区别?

其实感觉没必要有NSMutableCopying,因为压根就没可变的HSPerson,但如果该对象有其他行为,可以借用NSMutableCopying实现,哈哈哈

copy.strong

说完深浅拷贝,理解copy.strong就轻松多了!

copy



property copy 实际上就对name干了这个:

假设name为NSMutableString,会发生什么事?

@property (nonatomic, copy) NSMutableString *name;

这样会挨骂哦,实际上内部还是:

copy出来的仍然是不可变字符!如果有人用NSMutableString的方法,就会崩溃:



strong

@property (nonatomic, strong) NSString *name;



总结:用copy与strong取决于需求,如果不希望被外界更改用copy,反之用strong
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: