对象的复制
?2 .源對象與新對象使用不同的內存區域
3 .需要實現NSCopying或者NSMutableCopying協議才能使用 復制功能
4 .Foundation中的基礎數據類型如NSString、NSNumber等都 實現了NSCopying
5?.新對象的引用計數為1?
?NSMutableArray *array = [[NSMutableArray alloc] init];
NSMutableArray *array=[NSMutablearray ?arraywithobject@"zhangsan"@"lisi"]
?
@property (nonatomic, strong) NSMutableArray *books;
?- (void)setBooks:(NSMutableArray *)books//定義屬性時自動生成的,自定義時會將系統生成的覆蓋
{
? ? _books = [books copy];//如果是copy默認生成這種方法,返回值不可變 即使使用深拷貝也會使用同一個地址
? ? // _books=[books mutableCopy];//返回值是可變的
? ? _books=self.books;//strong生成這種方法,依靠它的類可確定是否為可變或不可變
}
?
- (id)copyWithZone:(NSZone *)zone ?//使用copy就必須實現這個方法,和協議
{
? ? Student *stu = [[[self class] allocWithZone:zone] init];
? ? stu->weight = weight;
? ? stu.age = self.age;?
//? ? stu.books = self.books;//淺拷貝數值一樣,地址不一樣
? ? stu.books = [self.books copy];//深拷貝數值地址都一樣,倆對象共用一個存儲空間
?
轉載于:https://www.cnblogs.com/niang123/p/3877103.html
總結
- 上一篇: 黄山风景区索道开放时间
- 下一篇: 求一个好听又霸气的黑帮名字。