深浅复制

网上一堆 copy retain weak assign 模棱两可的描述,越看越令人懵!


知乎大牛解释得非常好:

只要看两篇就可以弄的很懂。


1.copy 和 strong

https://www.zhihu.com/question/20102376


2.深浅复制

https://www.zhihu.com/question/36987710


    NSMutableString* str1 = [NSMutableString stringWithString:@"hello"];
    NSMutableString* str2 = [NSMutableString stringWithString:@"world"];

    
    NSArray* array = [NSArray arrayWithObjects:str1, str2, nil];

    NSArray* arrayShadowCopy = [array copy];
    
//    NSMutableArray* arrayShadowCopy = [array mutableCopy];

//    [arrayShadowCopy removeObjectAtIndex:0];
    
    
    NSMutableArray* arrayDeepCopy = [NSMutableArray arrayWithCapacity:[array count]];
    
    for (NSMutableString* str in array)
    {
        [arrayDeepCopy addObject:[str copy]];
        
    }
    
    [str1 appendString:@"1234"];
    
    
    NSLog(@"array: %@    and %p", array, array);
    
    NSLog(@"array shadow copy : %@    and %p", arrayShadowCopy, arrayShadowCopy);
    
    NSLog(@"array deep   copy : %@    and %p", arrayDeepCopy,   arrayDeepCopy);

搞明白这段代码,和组合各种情况模拟一样,就可以明白,其实说到底了就是 指针 和 内存区的事情啦


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值