美文网首页
copy/strong 浅拷贝与深拷贝 注意修改数组内数据时造成

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

作者: 然亦伞 | 来源:发表于2016-03-23 18:15 被阅读140次

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];

}

相关文章

网友评论

      本文标题:copy/strong 浅拷贝与深拷贝 注意修改数组内数据时造成

      本文链接:https://www.haomeiwen.com/subject/fjzllttx.html