strong此特质标明该属性定义了一种拥有关系。为这种属性设定新值时,设置方法会先保留新值再释放旧值,然后再讲新值设置上去。

copy 此特质所表达的所属关系与strong类似。然而设置方法并不保留新值而是将其拷贝,当属性类型为NSString*时,经常用此特性来保护其封装性,因为传递给设置方法的新值有可能指向一个NSMutableString类的实例这个类是NSString的子类,表示一种可以修改其值得字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以这时就要拷贝一份不可变的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是可变的,就应该在设执行属性是拷贝一份。

现有A、B两个类,A类设置一可变字符串a , B类声明两个strong copy两个不同变量b1、b2;

B * b =[[B alloc]init];

NSMutableString * a=[@"first" mutableCopy];

B.b1=a;

B.b2=a;

分析下面两种操作对B中b1、b2影响

1️⃣[a appendString:@"+"];     /    2️⃣a=[@"second" mutableCopy];

NSLog(@"%@",B.b1);

NSLog(@"%@",B.b2);

第一种打印结果分别为first first+

第二种打印结果分别为first first

针对第一种分析:strong指向的是相同对象地址,仅仅是指针引用,增加了引用计数,这样源头改变的时候,它也会跟着改变; 而copy声明的变量,指向的是不同对象地址、它不会跟着源头改变,实际上是深拷贝。

而第二种,重新赋值相当于对于变量a又重新开辟了一段地址,而b1中记录的依旧是初始值a的地址,所以其值不发生改变。

深度解析copy与strong的区别相关推荐

  1. 深度解析Create_clock与Create_generated_clock的区别

    深度解析Create_clock与Create_generated_clock的区别 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 最近朋友需要几位稍微资 ...

  2. [PYTHON] 深度解析copy.copy() 与 copy.deepcopy()

    在列表中,想要复制一个列表,可以使用copy()函数,在列表中,copy()函数与切片 [:] 功能相同 a=[0,1,[0,1]] b=a.copy() c=a[:] -----print b,c- ...

  3. 万字长文|Hashtable源码深度解析以及与HashMap的区别

    基于JDK1.8对Java中的Hashtable集合的源码进行了深度解析,包括各种方法.扩容机制.哈希算法.遍历方法等方法的底层实现,最后给出了Hashtable和HashMap的详细对比以及使用建议 ...

  4. LoRa 深度解析LoRa和LoRaWAN的区别

    1.总体介绍 查看全文 http://www.taodudu.cc/news/show-6836959.html 相关文章: [五一创作]LoRaWAN简介 我的世界java版怎么用结构方块_结构方块 ...

  5. iOS属性之assign,copy,retain的区别以及weak和strong的区别

    为什么80%的码农都做不了架构师?>>>    @property (nonatomic, assign) NSString *title; 什么是assign,copy,retai ...

  6. #深度解析# SSR,MSE,RMSE,MAE、SSR、SST、R-squared、Adjusted R-squared误差的区别

    文章目录 概述 1. SSE 2. MSE 3. RMSE 4. MAE 5. R-squared 6. Adjusted R-squared 7 对比 MAE.MSE.RMSE.R-square.A ...

  7. IO(BIO),NIO,AIO的深度解析和区别

    IO(BIO),NIO,AIO的深度解析和区别    IO    概念: Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  8. [转帖]深度解析区块链POW和POS的区别

    深度解析区块链POW和POS的区别 Proof of Work 还有Proof of Stake之前理解程了 state ... 股权的意思 还有 delegated proof of Stake 能 ...

  9. 深度解析数据分析、大数据工程师和数据科学家的区别

    数据越来越多的影响并塑造着那些我们每天都要交互的系统.不管是你使用Siri,google搜索,还是浏览facebook的好友动态,你都在消费者数据分析的结果.我们赋予了数据如此大的转变的能力,也难怪近 ...

  10. Kafka深度解析(如何在producer中指定partition)(转)

    原文链接:Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能 ...

最新文章

  1. 常用排序算法的C++实现
  2. 一文快速入门分库分表中间件 Sharding-JDBC
  3. 安卓逆向入门教程(一)
  4. 给字符串对象定义一个repeat功能。当传入一个整数n时,它会返回重复n次字符串的结果。
  5. 如何获取微信API的Access Token
  6. linux procs单位m,Linux
  7. “买苹果辞退,买华为补贴”,这家公司支持国产手机的理由给我惊到了!
  8. oracle读写文件--利用utl_file包对磁盘文件的读写操作
  9. 惠普微型计算机怎么装机,详解hp如何安装系统
  10. JAVA设计模式-单例模式(Singleton)线程安全与效率
  11. 如何在苹果Mac上删除APFS卷?
  12. 【敏捷开发每日一贴】代码走查
  13. 有关python毕设题目_python毕设题目
  14. win10系统连接不上服务器,win10系统电驴连接不上服务器的解决方法
  15. 深度学习框架tensorflow学习与应用6(优化器SGD、ADAM、Adadelta、Momentum、RMSProp比较)
  16. 2019第三届“数维杯”大学生数学建模夏令营
  17. Linux中压缩解压工具使用
  18. 《中学物理教学参考》期刊简介及投稿须知
  19. 麦克尼马尔检验(McNemar test)
  20. 如何应对学习知识、技能不用就会忘(节选自《穷查理宝典》第十一讲:人类误判心理学之不用就忘倾向)

热门文章

  1. 数字信号处理-基础一
  2. 火焰检测方法和数据集记录
  3. 原子结构示意图全部_原子结构示意图全部-原子结构示意图规律口诀-前20号元素的原子结构示意图...
  4. 微型计算机原理与接口技术马静答案,微机原理与接口技术(马静)
  5. batchplot插件用法_batchplot批量打印怎么用?Batchplot(CAD批量打印工具)安装步骤
  6. 在本地计算机无法启动uGs,SIEMENS_NX 免安装版
  7. 计算机类毕业论文中期检查,计算机类毕业论文中期检查表
  8. 手机测试的主要测试内容
  9. php kindeditor,在PHP使用kindeditor
  10. centos7服务器安装无线网卡,CentOS 7 安装无线网卡驱动方法实例教程