OC copy内存管理语义及 copy mutableCopy
来源:互联网 发布:c语言字符串按长度排序 编辑:程序博客网 时间:2024/06/05 19:48
1.copy内存管理语义
A:copy 相对 strong对属性(string array dictionarry)的修饰,区别在于如果传过来的是一个mutable,strong修饰的指针内容会受到外部修改而影响,而内部默认无感知;copy则会重新alloc拷贝一份,而对于传过来的是inmutable的处理方式一致,都是增减引用计数。
B:定义block的时候,其定义的内存是分配在栈中的,其在定义block的范围内有效,当对象存在block属性一般用copy内存管理语义,拷贝到堆区,也就相当于存在引用计数概念了,后续的复制只会增加引用计数。
备注:
(1)
[NSString copy] 指针复制,返回的对象的地址和方法的接收者一样,引用计数加1
[NSMutableString copy] 深复制,重新Alloc一个 NSString 的对象,并返回。返回对象的地址和方法接收者的地址不一样,并且方法接受者的内容改变不影响返回对象,同时返回对象的内容不可以改变。
(2)
[NSString mutableCopy] 深复制,重新Alloc一个NSMuatbleString,并返回。返回对象的地址和方法接收者的地址不一样,2者的内容改变不影响另一者,同时返回对象的内容可以改变。
[NSMutableString mutableCopy] 深复制,重新Alloc一个NSMuatbleString,并返回。返回对象的地址和方法接收者的地址不一样,2者的内容改变不影响另一者,同时返回对象的内容可以改变。
(3)
对于数组、集合等容器讲虽然做了深复制,但是内部元素地址还是浅拷贝,比如一个人的朋友圈集合的复制,所以要实现深拷贝就要对象去实现NSCopying协议,或者提供一个 deepCopy方法。
对象调用了copy方法,而copy方法最终会要求调用类方法copyWithZone:, 而NSObject本身并没有实现这个类方法, 这个方法是放在NSCopying协议中的,自定义对象调用copy需要实现协议。
- OC copy内存管理语义及 copy mutableCopy
- 内存管理与copy和mutableCopy
- oc中的copy与mutableCopy
- oc中的copy与mutableCopy
- OC关键字copy与mutableCopy
- 134,Copy,MutableCopy的应用与内存管理
- iOS 内存管理~非集合对象的copy和mutableCopy
- iOS 内存管理~集合对象的copy和mutableCopy
- 【OC学习-11】ARC和内存管理里面的alloc、assign、new、retain、copy、mutableCopy、release说明
- copy 、mutableCopy
- Copy & MutableCopy
- copy mutableCopy
- copy && mutableCopy
- OC-057.copy和MutableCopy的使用
- OC语言学习13-Copy和MutableCopy
- OC的copy与mutableCopy剖析(copy篇)
- OC的copy与mutableCopy剖析(mutableCopy篇)
- ios内存管理语义 assign strong weak copy unsafe_unretained
- Linux常用命令
- SparkSQL之查询,过滤
- FreeRTOS源码分析之heap3.c
- tp 实现无限回复评论功能
- 存储过程5
- OC copy内存管理语义及 copy mutableCopy
- android:ellipsize的使用
- java并发编程实战读书笔记
- FreeRTOS源码分析之heap4.c
- js 回到顶部
- SqlServer系统函数整理(一)
- [学习操练]C++智能指针类的简单实现(类模板实现)
- springboot 更换Favicon
- Java-log调试