美文网首页
深浅copy

深浅copy

作者: 上尉H借个火 | 来源:发表于2018-03-22 11:08 被阅读0次

    概念:
    浅拷贝:不拷贝对象,只拷贝对象指针,因此不会产生新的对象。
    深拷贝:拷贝对象到新的内存,因此会产生新的对象。

    示例:

        NSString *string = [[NSString alloc] init];
        NSString *s1 = [string copy];
        NSString *s2 = [string mutableCopy];
        NSLog(@"string==%p, s1--%p, s2==%p", string, s1, s2);
    
       结果:string==0x100fa6320, s1--0x100fa6320, s2==0x604000257b80
    
        NSMutableString *str = [[NSMutableString alloc] init];
        NSMutableString *str1 = [str copy];
        NSMutableString *str2 = [str mutableCopy];
        NSLog(@"str--%p, str1--%p, str2==%p", str, str1, str2);
    
       结果: str--0x604000258060, str1--0x101eb0030, str2==0x604000258150
    
    结论 mutableCopy copy
    可变对象 深拷贝 深拷贝
    不可变对象 深拷贝 浅拷贝

    然后我们再来看copy关键字的特点:
    修改源对象的属性和行为,不会影响副本对象
    修改副本对象的属性和行为,不会影响源对象

    相关文章

      网友评论

          本文标题:深浅copy

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