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

        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. max的高级用法

  2. Pandas | 09 迭代

    Pandas对象之间的基本迭代的行为取决于类型.当迭代一个系列时,它被视为数组式,基本迭代产生这些值.其他数据结构,如:DataFrame和Panel,遵循类似惯例,迭代对象的键. 简而言之,基本迭代 ...

  3. 洛谷 P4427

    传送门 洛谷P4427 题意: 给你一个数,然后让你求这两个数之间的点的深度的k次方和. #思路: 很容易想到lca.因为lca可以说是求树上两个点的距离的好方法.而且lca还能遍历每一个点. 然后我 ...

  4. GPS和LOAM的pose之间建立edge

    基于时间戳一致原理,在与PG的timestamp邻近的的两个LOAM的pose中插值出一个虚拟的LOAM pose PG' ,其timestamp = PG的timestamp. 然后GPS的pose ...

  5. [BZ1925] [SDOI2010]地精部落

    [BZ1925] [SDOI2010]地精部落 传送门 一道很有意思的DP题. 我们发现因为很难考虑每个排列中的数是否使用过,所以我们想到只维护相对关系. 当我们考虑新的一个位置时,给新的位置的数分配 ...

  6. 【原】无脑操作:Webstorm集成Git/Github

    Webstorm作为前端开发的主流工具,对Git及Github可以非常简便的集成. 1.开发环境:(如何安装就不说了) ① Webstorm 2018 ② git version 2.20.1 ③ G ...

  7. centos删除指定名称的进程

    vim kill_process.sh ----------------------------------- if [ "$1" = "" ]; then e ...

  8. 浅析PHP框架Laravel最新SQL注入漏洞

    PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下. 首先,这个漏洞属于网站coding写法不规范,官方给了提示: 但官方还是做了修补,升级最新版本V5.8. ...

  9. Python3+Robot Framework+RIDE安装使用教程

    一.说明 Python3----网上很多文章都是用Python2,Robot Framework的部分文档没更新也直接写着不支持Python3(如RIDE does not yet support P ...

  10. 【剑指offer】数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...