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

  • 相关阅读:
    【UML九种图系列】之用例图
    数据结构之后缀数组
    Web Service实例——天气预报
    庞果网 合法字符串
    web 版发送邮件-已删除
    C语言实现双向链表删除节点、插入节点、双向输出等操作
    [置顶] String StringBuffer StringBuilder的区别剖析
    N!末尾有多少个零
    细说业务逻辑 -- 丢失的业务逻辑层
    你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
  • 原文地址:https://www.cnblogs.com/shidaying/p/6926550.html
Copyright © 2011-2022 走看看