• Objective-C之深浅拷贝


    深拷贝(指针和指向都改变) , 浅拷贝(指针改变,指向不变)

            NSString *s1 = @"string";
            NSLog(@"s1 : %p, %p, %@", &s1, s1, [s1 className]);
    
            id s2 = s1; // 浅拷贝
            NSLog(@"s2 : %p, %p, %@", &s2, s2, [s2 className]);
            
            id s3 = [s1 copy]; // 浅拷贝 得到不可变对象
            NSLog(@"s3 : %p, %p, %@", &s3, s3, [s3 className]);
            
            id s4 = [s1 mutableCopy]; // 深拷贝 得到可变对象
            NSLog(@"s4 : %p, %p, %@", &s4, s4, [s4 className]);
    
            /**
             *  s1 : 0x7ffeefbff658, 0x1000020b8, __NSCFConstantString
             *  s2 : 0x7ffeefbff650, 0x1000020b8, __NSCFConstantString
             *  s3 : 0x7ffeefbff648, 0x1000020b8, __NSCFConstantString
             *  s4 : 0x7ffeefbff640, 0x1030197f0, __NSCFString
             */
    
            
    
            NSMutableString *ms1 = [NSMutableString stringWithFormat:@"%@", s1];
            NSLog(@"ms1 : %p, %p, %@", &ms1, ms1, [ms1 className]);
            
            id ms2 = ms1;// 指针指向指针 浅拷贝
            NSLog(@"ms2 : %p, %p, %@", &ms2, ms2, [ms2 className]);
            
            id ms3 = [s1 copy];// 深拷贝 得到不可变对象
            NSLog(@"ms3 : %p, %p, %@", &ms3, ms3, [ms3 className]);
    
            
            id ms4 = [s1 mutableCopy];// 深拷贝 得到可变对象
            NSLog(@"ms4 : %p, %p, %@", &ms4, ms4, [ms4 className]);
    
            
            /**
             *  ms1 : 0x7ffeefbff638, 0x1004297c0, __NSCFString
             *  ms2 : 0x7ffeefbff630, 0x1004297c0, __NSCFString
             *  ms3 : 0x7ffeefbff628, 0x1000020b8, __NSCFConstantString
             *  ms4 : 0x7ffeefbff620, 0x1006378f0, __NSCFString
             */
    
    源对象类型 拷贝模式 目标对象类型 拷贝类型
    NSMutableString copy 不可变 / NSString 深拷贝
    NSMutableString mutableCopy 可变 / NSMutableString 深拷贝
    NSString copy 不可变 / NSString 浅拷贝
    NSString mutableCopy 可变 / NSMutableString 深拷贝
  • 相关阅读:
    团队作业2
    团队作业2
    软件工程-团队作业1
    软件工程第一次作业
    自我介绍
    软件工程第一次作业
    Python3中采用PyInstaller打包工程项目
    mol2分子库文件拆分成单个mol2文件
    化学信息包安装
    单词读音音频源网址
  • 原文地址:https://www.cnblogs.com/mustard22/p/11091140.html
Copyright © 2020-2023  润新知