copy/strong 浅拷贝与深拷贝 注意修改数组内数据时造成的数据污染

1、为什么NSString 用copy

strong和retain同义, weak和assign同义, 为什么要采用这种说法, 似乎是ARC出现后为了消除引用计数的观念而采用的做法. 至于为什么要用copy, 由于纯NSString是只读的, 所以strong和copy的结果一样,据stackOverflow上的说法,是为了防止mutable string被无意中修改, NSMutableString是NSString的子类, 因此NSString指针可以持有NSMutableString对象.

2、copy的浅拷贝与深拷贝

3、strong 修改数组中指向同一地址的数据造成的数据污染

@property (strong, nonatomic) MerchantConfigListModel *configListModel;

[cellArray addObjectsFromArray:self.configListModel.Order];

if (self.configListModel.Order.count) {

//这里一定要用copy,不然会污染别处组数里self.configListModel.Order[0]指针的内容。

MerchantConfigListFirstModel *firstModelLastest = [self.configListModel.Order[0] copy];

firstModelLastest.Name = [CashCouponServer changeMerchantLatestToCouponLatest:firstModelLastest.Name];

[cellArray removeObjectAtIndex:0];

[cellArray insertObject:firstModelLastest atIndex:0];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容