.retain 与copy区别

retain 的仅仅是引用计数加1,但是并没有创建新的对象。它们的指针是指向相同的内存地址。

copy 是创建一个新的对象作为原来对象的副本,新创建出来的引用计数并没有加1。

copy 有两中协议 第一种NSCopying 与NSMutableCopying 一种是可变复制,一种是不可变复制 ;

可变是通过 mutableCopy 来实现可变的复制 ;

不可变是通过 copy 直接复制得到;

常用复制的的有:NSArray,NSNumber(只有不可变的复制),NSString,NSDictionary,NSMutableArray,NSMutableString,NSMutableDictionary

Foundation 可复制的对象,当我copy 的是一个不可变对象的是时候,它相当与retain(没有实现拷贝);

mutableCopy 拷贝的对象无论是可变的还是不可变的,副本是否为可变的,都实现拷贝。

copy 拷贝对象是可变的,副本是否为可变都实现了拷贝。

要实现copy n 必须实现NSCopying 和NSMutableCopy

1.-(id)copyWithZone:(NSZone *)zone

{

Engine *engine = [[[self class] allocWithZone:zone] init];

return engine;

}

2.- (id)mutableCopyWithZone:(NSZone *)zone

转载于:https://www.cnblogs.com/meixian/p/5370651.html

ios retain 与 copy 的区别相关推荐

  1. iOS strong和copy的区别

    级别: ★☆☆☆☆ 标签:「iOS」「NSString」「strong和copy」 作者: MrLiuQ 在iOS开发中,几乎每天都会遇到NSString属性的声明, 在ARC内存管理机制下, NSS ...

  2. IOS atomic与nonatomic,assign,copy与retain的定义和区别

    atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作.         atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全 ...

  3. atomic与nonatomic,assign,copy与retain的定义和区别

    atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全. 在多线程环境 ...

  4. retain和copy还有assign的区别

    retain和copy还有assign的区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a和b ...

  5. retain/copy/assign区别

    转自:http://blog.csdn.net/pjk1129/article/details/6457048#comments 在iphone程序中,属性合成中的retain/copy/assign ...

  6. @synthesize@dynamic@private,@protected,@publicassign、weak、strong、retain、copy、nonatomic、atomic

    iOS属性修饰关键字 1. @private,@protected,@public,@package详解及使用 @privite:私有的,只有本类(不包括子类)自己拥有 @protected:受保护的 ...

  7. iOS中nil Nil NULL 区别

    为什么80%的码农都做不了架构师?>>>    一.nil 当一个对象置为nil时,这个对象的内存地址就会被系统收回.置空之后是不能进行retain,copy等跟引用计数有关的任何操 ...

  8. XenServer中Fast Copy与Full Copy的区别

    详细跟踪了一下LVM-Based VDI与File-Based VDI的复制与链接过程,我们可以发现,Fast Copy与Full Copy有很大的区别,不同的形式对虚机VBD的性能具有一定的影响. ...

  9. 理解 retain 、copy 、NSMutableString 、NSString 的用法

    2019独角兽企业重金招聘Python工程师标准>>> copy为内容拷贝,retain为指针拷贝,NSMutableString为可变字符串,NSString为不可变字符串. 但并 ...

最新文章

  1. 关于Oracle full outer join 的bug问题分析及处理
  2. 计组-I/O系统的基本概念
  3. python使用xlrd模块读写excel
  4. 快微音频课程小程序v3.8.4+前端
  5. sublime text 配置
  6. 《如何了解软件的设计》学习笔记0——模型-接口-实现
  7. 人间故事馆话题:聊聊那些被骗经历,让其他人不再被骗
  8. 按钮控制android progressbar,Android ProgressBar手动控制开始和停止
  9. java ResourceBundle类
  10. Eclipse下载安装配置测试(超详细)
  11. vue3.x自定义换肤
  12. 数据挖掘常用算法优缺点分析
  13. [GAMES101]现代计算机图形学课程总结2:光栅化和反走样
  14. HTML5 1.4 列表
  15. html5 游戏 闪退,WeGame闪退怎么办?WeGame闪退的六种解决办法
  16. 前摇篮网CEO高翔去世:生前脑干出血没挺住 年55岁
  17. 第五次网页前端培训(JS基础)
  18. 24岁本科女生培训入门,学测试和前端哪个好?
  19. 嵌入式系统的发展前景和趋势怎么样
  20. 20 天从零开始完成一个秒杀流程示例

热门文章

  1. 基于神经网络的混合计算(DNC)-Hybrid computing using a NN with dynamic external memory
  2. **ML : ML中的最优化方法
  3. Vtk读取并显示保存图像
  4. 【通用技术】2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会...
  5. 自定义sort函数第三个参数的规则
  6. T4生成多文件时,不生成自己
  7. 春风十里不如春城一聚:华平解决方案巡展走进昆明
  8. ×××梦 最近要开始研究Excel 2010
  9. LNMP服务跨省迁移的解决方案
  10. android-远程图片获取和本地缓存