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

  • 相关阅读:
    工作实战之项目常用技术
    Thymeleaf的错误解决方式
    实用小demo
    idea常用的几个插件
    idea2019+Plugins中搜索不到任何插件解决办法
    git的初体验
    springboot2.+的整合log4j2错误解决浅谈
    MobaXterm百度网盘下载
    阿里云RDS云数据库连接步骤
    读源码学编程之——死循环妙用
  • 原文地址:https://www.cnblogs.com/shidaying/p/6926550.html
Copyright © 2011-2022 走看看