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

        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 深拷贝

Objective-C之深浅拷贝的更多相关文章

  1. Python 从零学起(纯基础) 笔记 之 深浅拷贝

    深浅拷贝 1. import  copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2.   对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...

  2. python——赋值与深浅拷贝

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...

  3. Python中的深浅拷贝

    1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...

  4. Python-Day3知识点——深浅拷贝、函数基本定义、内置函数

    一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...

  5. python基础知识5——赋值与深浅拷贝——整数和字符串,列表元组字典

    深浅copy 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 import copy 2 # ######### 数字.字符串 #### ...

  6. python 学习笔记5(深浅拷贝与集合)

    拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...

  7. Python开发【第二章】:Python深浅拷贝剖析

    Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...

  8. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...

  9. @proprety数组字典字符串用copy和strong区别(深浅拷贝)

    ////  @proprety数组字典字符串用copy和strong区别(深浅拷贝).h//  IOS笔记//// /* _proprety________copy_strong_________h ...

  10. Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数

    一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...

随机推荐

  1. Excel 使用小技巧

    连接符,符号是&,输入方式为按住Shift+7“&”在连接单元格内容时,不管单元格格式为文本还是数值,都能连接,但得到的结果都是文本型数字. ="update tb_reco ...

  2. Layui 模板引擎中的 日期格式化

    原文:https://www.jianshu.com/p/948a474b5ed7 原文:https://blog.csdn.net/DCFANS/article/details/92064112 模 ...

  3. C——swap

    /* swap.c */ /* function swap to swap two numbers */ #include <stdio.h> void swap(int*, int*); ...

  4. OD(lfdnb)

    由于一场意外,D死了,在此开一个新坑 2019.11.13 考前焦虑 智商为负 有点担心考试状态 2019.11.12 上午考试简直心态爆炸 T1看了一个小时不会 然后看T2,这时候wxy聚聚已经切了 ...

  5. 【数位DP】【P4127】[AHOI2009]同类分布

    Description 给出两个数 \(a,~b\) 求出 \([a~,b]\) 中各位数字之和能整除原数的数的个数. Limitations \(1 \leq a,~b \leq 10^{18}\) ...

  6. 洛谷P3084 [USACO13OPEN]照片

    题目 \(DP\) 设状态\(dp[i]\)为\(i\)位置放了斑点牛,前\(i\)个位置能得到的最多的牛. 有方程\(dp[i]=max(dp[j]+1,dp[i])\),而我们并不知道什么\(j\ ...

  7. 关于微信订阅号里自动回复里的a链接的问题

    前阵子做了一个微信订阅号的活动,然后发现一个问题:就是回复内容里的a标签微信没有解析出来,而是这样 正常应该是这样: 具体出现这种情况的手机有: 魅族的型号是:M1 metal小米的型号是:MI 5X ...

  8. PyCharmIDE: 给脚本传递参数

  9. 搭建git服务器配置gitolite[迁移原来的gitolite工程]

    参考 https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664 http://www.worldhello.net/gotgit ...

  10. RPA系列之(二)-UIPath学习目录

    如何一步步渐入佳境,跟着目录一点一点来 UiPath简介 UiPath下载安装与激活 UiPath第一个案例Hello World UiPath变量的介绍和使用-1 UiPath变量的介绍和使用-2 ...