iOS copy相关
来源:互联网 发布:java wait notify 源碼 编辑:程序博客网 时间:2024/05/21 14:53
copy与retain的区别:
copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属性表示两个对象内容相同,新的对象retainCount为1,与旧有对象的引用计数无关,旧有对象没有变化,copy减少对象对上下文的依赖.
retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retainCount值+1也就是说,retain 是指针拷贝,copy 是内容拷贝
字符串为什么要用Copy
假如有一个NSMutableString,现在用他给一个retain修饰的NSString赋值,那么只是将NSString指向了NSMutableString所指向的位置,并对NSMutbaleString计数器加一,此时,如果对NSMutableString进行修改,也会导致NSString的值修改,原则上这是不允许的.
如果是copy修饰的NSString对象,在用NSMutableString给他赋值时,会进行深拷贝,及把内容也给拷贝了一份,两者指向不同的位置,即使改变了NSMutableString的值,NSString的值也不会改变.所以用copy是为了安全,防止NSMutableString赋值给NSString时,前者修改引起后者值变化而用的
自定义对象的拷贝
自定义对象如果要浅拷贝就遵守协议 (copy)
自定义对象如果要深拷贝就遵守协议 (mutableCopy)
自定义对象遵守了相关协议,就能够调用相应的深拷贝或者浅拷贝的方法
Block定义成属性为什么用Copy
MRC : Block的本质是函数指针,内存地址在栈区,使用Copy是为了把Block由栈区拷贝到堆区,共享给当前对象使用.
ARC : Block定义成属性时,使用strong和copy的效果是一样,但是苹果官方建议使用copy.
- iOS copy相关
- iOS block相关:weakSelf和block copy
- Copy相关
- iOS Copy
- iOS 深copy 浅copy
- ios 深copy 浅copy
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- IOS 上的COPY
- IOS copy retain
- assign retain copy iOS
- ios 编程 之 copy
- iOS 工程 copy 问题
- iOS基础一 Copy
- IOS-Foundation-Copy
- ios copy 与 mutablecopy
- iOS copy, mutableCopy, strong
- C99标准
- NET Core-学习笔记(一)
- [oracle]创建profile 创建角色用户
- [容斥原理+组合数学]51 Nod 1829——函数
- 期刊编审流程
- iOS copy相关
- #CCF准备一年日常刷题#201612-1 中间数
- 文件IO
- 交叉编译boost和opencv
- 查找数组中第K个最小值
- MAC电脑常用快捷键
- 防卫式声明笔记----C++学习之路
- java IO流 之 字符流 之 FileReader
- EBS开发_此责任无可用函数