深.浅拷贝与copy.strong

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。

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

推荐阅读更多精彩内容