深.浅拷贝与copy.strong

作者: 大也 | 来源:发表于2017-03-13 11:19 被阅读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。

相关文章

网友评论

    本文标题:深.浅拷贝与copy.strong

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