zoukankan      html  css  js  c++  java
  • copy and mutableCopy

    结论:

     

     

    1, 深复制与浅复制

     2,immutable和mutable

     

    3,代码分析:
     

    #pragma mark - String
    
    - (void)stringCopyAndMutableCopy {
        NSString *originStr = @"123";
        NSString *copyStr = [originStr copy];//浅复制
        NSString *mutableCopyStr = [originStr mutableCopy];//深复制
        NSLog(@"string origin = %p, copy = %p, mutableCopy = %p", originStr, copyStr, mutableCopyStr);
        NSLog(@"str copy class = %s, mutableCopy class = %s", object_getClassName(copyStr), object_getClassName(mutableCopyStr));
    }
    
    - (void)mutableStringCopyAndMutableCopy {
        NSMutableString *originMutableStr = [NSMutableString stringWithString:@"123"];
        NSString *copyMutableStr = [originMutableStr copy];// 深复制
        NSString *mutableCopyMutableStr = [originMutableStr mutableCopy];//深复制
        NSLog(@"mutableStr origin = %p, copy = %p, mutableCopy = %p", originMutableStr, copyMutableStr, mutableCopyMutableStr);
        NSLog(@"mutableStr copy class = %s, mutableCopy class = %s", object_getClassName(copyMutableStr), object_getClassName(mutableCopyMutableStr));
    }
    
    #pragma mark - Array
    
    /**
     *
     *  __NSArrayM->NSMutableArray->NSArray
     *  __NSArrayI->NSArray
     */
    
    
    - (void)arrayCopyAndMutableCopy {
        NSArray *orginArray = @[@"123"];
        NSArray *copyArray = [orginArray copy];
        NSArray *mutableCopyArray = [orginArray mutableCopy];
        NSLog(@"array origin = %p, copy = %p, mutableCopy = %p", orginArray, copyArray, mutableCopyArray);
        NSLog(@"array copy class = %s, mutableCopy class = %s", object_getClassName(copyArray), object_getClassName(mutableCopyArray));
    }
    
    - (void)mutableArrayCopyAndMutableCopy {
        NSMutableArray *orginMutableArray = [NSMutableArray arrayWithObject:@"123"];
        NSArray *copyMutableArray = [orginMutableArray copy];
        NSArray *mutableCopyMutableArray = [orginMutableArray mutableCopy];
        NSLog(@"mutableArray origin = %p, copy = %p, mutableCopy = %p", orginMutableArray, copyMutableArray, mutableCopyMutableArray);
        NSLog(@"mutableArray copy class = %s, mutableCopy class = %s", object_getClassName(copyMutableArray), object_getClassName(mutableCopyMutableArray));
    }

    示例代码:https://github.com/shilihuan/CopyAndMutableCopy

  • 相关阅读:
    【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
    Stanford公开课《编译原理》学习笔记(1~4课)
    Vue源码中compiler部分逻辑梳理(内有彩蛋)
    Vue+ElementUI项目使用webpack输出MPA
    Vue-Router中History模式
    Vue中拆分视图层代码的5点建议
    如何正确使用Java泛型
    ZooKeeper的三种典型应用场景
    Tomcat多实例部署
    Tomcat常用的过滤器
  • 原文地址:https://www.cnblogs.com/shidaying/p/6926550.html
Copyright © 2011-2022 走看看