深.浅拷贝与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