1.深.浅拷贝
295346-bd95431918be69b1.png2.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方法,
-
strong对应的setter方法,是将_property先release(_property release),然后将参数retain(property retain),最后是_property = property。
-
copy对应的setter方法,是将_property先release(_property release),然后拷贝参数内容(property copy),创建一块新的内存地址,最后_property = property。
网友评论