ObjectiveC 深浅拷贝学习

1.IOS Copy什么时候用?

在O-C里面有个值对象的概念,当你新定义一个属性是值对象时就应该用copy来修饰。那么都什么对象是值对象呢?

值对象是指封装了基本值(属于 C 数据类型)且提供与该值相关的服务的对象。值对象以对象形式表示标量类型。Foundation 框架向您提供了以下类(这些类产生对象,用于字符串、二进制数据、日期与时间、数字以及其他值):
NSString和NSMutableString

NSData和NSMutableData

NSDate

NSNumber

NSValue

http://my.oschina.net/lych0317/blog/127832?p=1

Apple官方文档如下:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Articles/Copying.html

时间: 2024-08-09 22:18:21

ObjectiveC 深浅拷贝学习的相关文章

ios学习路线—Objective-C(深浅拷贝)

在ObjC中,什么是深浅拷贝?  深浅拷贝分别指深拷贝和浅拷贝,即 mutableCopy 和 copy 方法.  copy复制一个不可变对象,而 mutableCopy 复制一个 mutable 可变对象. 非容器类对象  如NSString,NSNumber等一类对象 示例1: // 非容器类对象 NSString *str = @"origin string"; NSString *strCopy = [str copy]; NSMutableString *mstrCopy =

Python 3 学习的第八天——深浅拷贝以及函数

Python 学习的第八小节 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享 一.学习笔记 1.深浅拷贝 浅copy-- copy.copy()  #shallow copy 使用 b = a.copy() 这样b是对a进行了浅copy  包含了浅copy的一切特点 特点:只copy"一层"  这个一层是指(假如a[ [ 1 , 2 ] , 3 , 4 ])这样,b copy后只能修改 b[1].b[2]的值cai不会影响 a 的值,如果b修改了列表中元素的值,那么就

python学习笔记4:基础(集合,collection系列,深浅拷贝)

转载至:http://www.cnblogs.com/liu-yao/p/5146505.html 一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)

Python 学习日记第六篇 -- 深浅拷贝

深浅拷贝: 1.字符串和数字 import copy #浅拷贝 copy.copy() #深拷贝 copy.deepcopy() ###################################################################################### a1 = "string" #a1 = 11 a2 = a1 a3 = copy.copy(a1) a4 = copy.deepcopy(a1) print(id(a1)) print(

学习笔记1(三元运算、深浅拷贝、动态参数、全局变量与局部变量、set数据类型 )

(三元运算.深浅拷贝.动态参数.全局变量与局部变量.set数据类型 ) set 数据类型--无序,不重复的集合 一.三元运算.三木运算--减少代码量 name="X1"if 条件 else "x2" 例子:name =" alsx"  if 1==1 else "e" 二.深拷贝与浅拷贝:深拷贝拷贝所有的东西,浅拷贝拷贝最外面一层. 三.面向函数的编程(先前都是面向过程的编程) 生成函数>-执行函数>-返回执行的结

python学习之深浅拷贝

深浅拷贝 浅拷贝: 1.针对的是可变数据类型:list.dict.set  ,不可变数据类型int.str.tuple.bool 是没有拷贝一说的,他们都没copy() 方法 2.浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变 3.= 赋值不是浅拷贝,[:] 切片是浅拷贝 a = [11,22,[11,22]] b = a 注:以上称为赋值,只是将a,b都指向了同一个内存地址 a.append(33) print

Python学习-列表深浅拷贝

一.先看一个简单的赋值语句 lst1 = ['France', 'Belgium', 'England'] lst2 = lst1 # lst1.append('Uruguay') lst2.append('Uruguay') print(lst1, lst2) # 猜测一下lst1, lst2的结果:lst2变化是否对lst1产生影响,lst1变化是否对lst2产生影响 输出结果: ['France', 'Belgium', 'England', 'Uruguay'] ['France', '

Python学习 :深浅拷贝

深浅拷贝 一.浅拷贝 只拷贝第一层数据(不可变的数据类型),并创建新的内存空间进行储蓄,例如:字符串.整型.布尔 除了字符串以及整型,复杂的数据类型都使用一个共享的内存空间,例如:列表 列表使用的是同一个内存地址,指向原拷贝的值,即使用的是原本的内存空间 import copy #假设a为一个信用卡账号,分别存有用户名称XM.账号1001.可用额度以及余额 a=['XM',1001,[10000,8000]] #b为a的一张副卡,给他人使用用户名称XM1.账号1002 b=a.copy() b[

Python学习之路(四):基础知识之深浅拷贝

1.is和==的区别 == 比较左右两边的值,如果相同,打印的是True,如果不同,打印的是False 1 n = 10 2 n1 = 12 3 print(n == n1) #False is比较的是内存地址 1 a = 'dhj' 2 b = 'dhj' 3 print(a is b) # True 1 a = 'a'*21 2 b = 'a'*21 3 print(a is b) #false 为什么第二个程序中的结果会是False呢,这涉及到一个小数据池的概念: 小数据池只限制于数值和字