2017年开始的iOS 觉醒(5星) 升星之路

深.浅拷贝与copy.strong

2017-03-13  本文已影响8人  大也

1.深.浅拷贝

295346-bd95431918be69b1.png

2.copy.strong


NSMutableArray *books = [@[@"book1"] mutableCopy];

Person *person = [[Person alloc] init];

person.bookArray1 = books;

person.bookArray2 = books;

[books addObject:@"book2"];

NSLog(@"bookArray1:%@",person.bookArray1);

NSLog(@"bookArray2:%@",person.bookArray2);

使用strong修饰的person.bookArray1输出是[book1,book2],

而使用copy修饰的person.bookArray2输出是[book1]

其实就是不同的修饰符,对应不同的setter方法,

  1. strong对应的setter方法,是将_property先release(_property release),然后将参数retain(property retain),最后是_property = property。

  2. copy对应的setter方法,是将_property先release(_property release),然后拷贝参数内容(property copy),创建一块新的内存地址,最后_property = property。

上一篇 下一篇

猜你喜欢

热点阅读