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 | 深拷贝 |
Objective-C之深浅拷贝的更多相关文章
- Python 从零学起(纯基础) 笔记 之 深浅拷贝
深浅拷贝 1. import copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2. 对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...
- python——赋值与深浅拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- Python中的深浅拷贝
1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...
- Python-Day3知识点——深浅拷贝、函数基本定义、内置函数
一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...
- python基础知识5——赋值与深浅拷贝——整数和字符串,列表元组字典
深浅copy 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 import copy 2 # ######### 数字.字符串 #### ...
- python 学习笔记5(深浅拷贝与集合)
拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...
- Python开发【第二章】:Python深浅拷贝剖析
Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
- @proprety数组字典字符串用copy和strong区别(深浅拷贝)
//// @proprety数组字典字符串用copy和strong区别(深浅拷贝).h// IOS笔记//// /* _proprety________copy_strong_________h ...
- Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数
一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...
随机推荐
- Excel 使用小技巧
连接符,符号是&,输入方式为按住Shift+7“&”在连接单元格内容时,不管单元格格式为文本还是数值,都能连接,但得到的结果都是文本型数字. ="update tb_reco ...
- Layui 模板引擎中的 日期格式化
原文:https://www.jianshu.com/p/948a474b5ed7 原文:https://blog.csdn.net/DCFANS/article/details/92064112 模 ...
- C——swap
/* swap.c */ /* function swap to swap two numbers */ #include <stdio.h> void swap(int*, int*); ...
- OD(lfdnb)
由于一场意外,D死了,在此开一个新坑 2019.11.13 考前焦虑 智商为负 有点担心考试状态 2019.11.12 上午考试简直心态爆炸 T1看了一个小时不会 然后看T2,这时候wxy聚聚已经切了 ...
- 【数位DP】【P4127】[AHOI2009]同类分布
Description 给出两个数 \(a,~b\) 求出 \([a~,b]\) 中各位数字之和能整除原数的数的个数. Limitations \(1 \leq a,~b \leq 10^{18}\) ...
- 洛谷P3084 [USACO13OPEN]照片
题目 \(DP\) 设状态\(dp[i]\)为\(i\)位置放了斑点牛,前\(i\)个位置能得到的最多的牛. 有方程\(dp[i]=max(dp[j]+1,dp[i])\),而我们并不知道什么\(j\ ...
- 关于微信订阅号里自动回复里的a链接的问题
前阵子做了一个微信订阅号的活动,然后发现一个问题:就是回复内容里的a标签微信没有解析出来,而是这样 正常应该是这样: 具体出现这种情况的手机有: 魅族的型号是:M1 metal小米的型号是:MI 5X ...
- PyCharmIDE: 给脚本传递参数
- 搭建git服务器配置gitolite[迁移原来的gitolite工程]
参考 https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664 http://www.worldhello.net/gotgit ...
- RPA系列之(二)-UIPath学习目录
如何一步步渐入佳境,跟着目录一点一点来 UiPath简介 UiPath下载安装与激活 UiPath第一个案例Hello World UiPath变量的介绍和使用-1 UiPath变量的介绍和使用-2 ...