黑马程序员——OC学习笔记—— Copy

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

copy 即对象拷贝

要使用对象数据而不希望修改对象时,可以使用copy

copy叫做浅拷贝  mutablecopy深拷贝

copy需要遵守NSCopying协议,实现CopywithZone方法

MutableCopy也一样要遵守相应协议

注意:

OC中copy复制的对象都是不可变的  mutablecopy复制的是可变副本

浅拷贝:只拷贝地址,不拷贝空间 是同一个对象,源对象和副本对象引用计数加1,相当于retain一次,所以在手动管理内存是要注意release一次

深拷贝:开辟新的空间存储副本对象,源对象的引用计数不变,副本对象引用计数都为1;

int main(int argc, const char * argv[]) {@autoreleasepool {Dog *d=[Dog new];d.age=20;d.tel=4100;Dog *d2=[d copy];NSLog(@"%d %d",d2.age,d2.tel);NSString *str=@"abc";NSMutableString *str2=[str mutableCopy];[str2 appendString:@"xxxxx"];NSLog(@"str2=%@",str2);}return 0;
}

  

实现Copying协议 重写方法

- (id)copyWithZone:(NSZone *)zone

@implementation Dog
- (id)copyWithZone:(NSZone *)zone{//为了让创建的两个对象copy使用不同的空间 要重新分配空间Dog *d=[[Dog alloc]init];d.age=self.age;d.tel=self.tel;return d;//注意此处不能返回return self不让两个对象用的是一块空间发生改变会影响对方}
@end

  

转载于:https://www.cnblogs.com/zijie/p/4929812.html

黑马程序员——OC学习笔记—— Copy相关推荐

  1. 黑马程序员Maven学习笔记

    前言 这里是黑马程序员Maven学习笔记分享,这是视频链接. 我还有其它前端内容的笔记,有需要可以查看. 文章目录 前言 基础 Maven简介 Maven是什么 Maven的作用 Maven的下载 M ...

  2. 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中

    目录 迭代器 序列式容器 vector -- 可随机访问 list -- 不支持随机访问 deque -- 动态 关联式容器 -- 红黑树 map multimap set multiset -- 废 ...

  3. 黑马程序员Javaweb学习笔记01

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记,方便复习以及加强记忆 文章目录 一 . BS架构,HTTP协议 http请求数据格式和相应数据格式 二 . web服务器 2.1 tomca ...

  4. 黑马程序员Javaweb学习笔记02【request和response】

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记,方便复习以及加强记忆

  5. 黑马程序员C++学习笔记<第一阶段_基础篇>

    配套视频网址: 黑马程序员:http://yun.itheima.com/course/520.html?bili B站:https://www.bilibili.com/video/BV1et411 ...

  6. 黑马程序员SSM-MyBatisPlus学习笔记

    目录 一.MyBatisPlus简介 1.1 SpringBoot整合MyBatisPlus入门程序 1.2 MyBatisPlus概述 二.标准数据层开发 2.1 标准数据层CRUD功能 2.2 分 ...

  7. 【黑马程序员JVM学习笔记】01.引言

    1. 什么是JVM? 定义: Java Virtual Machine,Java程序的运行环境(Java二进制字节码的运行环境) 好处: 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界检 ...

  8. 黑马程序员-C#学习笔记(二)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- - C# 学习笔记 一.变量与表达 ...

  9. 黑马程序员C++学习笔记(第二阶段核心:面向对象)(一)

    目录 内存分区:代码区,全局区,栈区,堆区 程序运行前:代码区,全局区 程序运行后:栈区,堆区 引用--给变量起别名 注意事项 引用做函数参数 引用做函数返回值 引用的本质---指针常量(值可变,指向 ...

  10. “黑马程序员”视频学习笔记之面向对象基础及调试问题

    ------- Windows Phone 7手机开发. .Net培训.期待与您交流! ------- ]方法: 语法:[访问修饰符][static] 返回值类型 方法名()             ...

最新文章

  1. mysql添加毫秒级时间
  2. 如何解决MySQL连接超时关闭
  3. Chrome插件开发进阶
  4. 11组软件工程组队项目计划安排及项目介绍——失误招领系统
  5. C#各种加密算法的研究
  6. 计算机二级c语言选择题范围,计算机二级C语言考点选择结构
  7. 计算机和网络老是断开,电脑插上网线还是显示断开连接怎么办
  8. 推荐专栏丨《DBA的奋斗路》
  9. 【AI面试题】GBDT原理、如何用于分类、常用损失函数
  10. python语言变量随时命名随时赋值_Python变量及数据类型用法原理汇总
  11. ETL PostgreSQL in Oracle ODI 12c
  12. GO语言学习之路17
  13. 网友热爱的截图软件--Sinpaste
  14. 安卓版Qinmei 追番必备神器 缓冲快
  15. 计算机网络:循环冗余码CRC
  16. 响应服务器530 5.7.0,SMTPSenderRefused(530,需要b'5.7.0身份验证)
  17. 新冠肺炎/病毒最新治疗研究进展(2022年6月)
  18. 即时通讯系统开发的问题详解
  19. 小白刷LeeCode(算法篇)6
  20. APPNP:PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALIZED PAGERANK

热门文章

  1. python做数据可视化的优势_用Python进行数据可视化的10种方法
  2. pagehelper中找不到pageinterceptor这个类_PageHelper分页插件
  3. imageio.write页面怎么显示_微信吃喝玩乐怎么没有了?微信支付页面吃喝玩乐在哪里...
  4. 微型计算机普遍采用的数字编码是,计算机原理复习题1
  5. Java和C++的对照
  6. Swift 5用Template自动创建VIPER架构代码
  7. 446.等差数列划分II-子序列
  8. 354.俄罗斯套娃信封问题
  9. 316.去除重复字母
  10. 越界操作导致程序崩溃的原理