深.浅拷贝
copy mutableCopy NSString
copy mutableCopy NSMutableString
结论:
注意:其他对象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一样适用
copy NSObject
崩溃:
看崩溃信息HSPerson应该先实现:
测试
可以看出copyWithZone重新分配新的内存空间,则:
虽然copy了份新的对象,然而age,height值并未copy,那么:
这时你会想,有NSMutableCopying?没错,是有这货:
NSCopying、NSMutableCopying有啥区别?
其实感觉没必要有NSMutableCopying,因为压根就没可变的HSPerson,但如果该对象有其他行为,可以借用NSMutableCopying实现,哈哈哈
copy.strong
说完深浅拷贝,理解copy.strong就轻松多了!
copy
property copy 实际上就对name干了这个:
假设name为NSMutableString,会发生什么事?
这样会挨骂哦,实际上内部还是:
copy出来的仍然是不可变字符!如果有人用NSMutableString的方法,就会崩溃:
strong
总结:用copy与strong取决于需求,如果不希望被外界更改用copy,反之用strong