copy
@property (nonatomic, copy) NSString *name;
self.name = mutableString;
这时,name对mutableString一个深拷贝,另开辟一个空间,将mutableString内容拷贝到这个空间中,self.name指向这个空间,修改mutableString,不影响self.name。
self.name = string;
这时,name对string是一个浅拷贝,只是将指针指向这个string所指向的对象,因为string是不可变对象,self.name也是不可变对象,不会发生修改现象,但可将string指向另个对象,但此时的self.name指向的对象并不会变。

strong
@property (nonatomic, strong) NSString *name;
self.name = mutableString;
这时,name对mutableString一个浅拷贝,只是将指针指向这个mutablestring所指向的对象,若mutableString对象发生改变,则self.name对象也将发生改变,因为它们始终指向的是同一个对象。
self.name = string;
这时,name对string一个浅拷贝,只是将指针指向这个string这个对象,因为string是不可变对象,self.name也是不可变对象,不会发生修改现象,但可将string指向另个对象,但此时的self.name指向的对象并不会变。

@property (nonatomic, strong) NSMutableArray *array;

self.array = mutableArray;

这时,array对mutableArray一个浅拷贝,只是将指针指向这个mutableArray所指向的对象,若mutableArray对象发生改变,则self.array对象也将发生改变,因为它们始终指向的是同一个对象。

@property (nonatomic, copy) NSMutableArray *array;

self.array = mutableArray;

这时,array对mutableArray一个深拷贝,并且array得到的是一个不可变的array,若你对array进行添加元素等操作,则会报错。

@property (nonatomic, strong) NSArray *array;

self.array = mutableArray;

这时,array对mutableArray一个浅拷贝,只是将指针指向这个mutableArray所指向的对象,若mutableArray对象发生改变,则self.array对象也将发生改变,因为它们始终指向的是同一个对象。

@property (nonatomic, copy) NSArray *array;

self.array = mutableArray;

这时,array对mutableArray一个深拷贝,另开辟一个空间,将mutableArray内容拷贝到这个空间中,self.array指向这个空间,修改mutableArray,不影响self.array。

ios copy和strong,浅拷贝和深拷贝的更多相关文章

  1. 洗礼灵魂,修炼python(16)--列表进阶话题—>上节作业讲解+copy模块,浅拷贝,深拷贝

    上节课后作业: 1.使用列表解析输出结果:[(0,0),(0,2),(2,0),(2,2)] 方法1: 方法2: 方法3: 2.使用列表生成器打印斐波那契数列 3.使用列表解析生成列表[1x2,3x4 ...

  2. IOS的浅拷贝和深拷贝

    什么是深拷贝和浅拷贝 浅拷贝:就是指针的复制,拷贝的指针跟原指针指向内存中的同一个位置的对象.至于对象的引用计数值是否+1,就是看拷贝的指针赋给给的变量是Strong类型的,还是week类型的. 如果 ...

  3. iOS开发那些事儿(五)Objective-C浅拷贝与深拷贝

    浅拷贝:copy操作出来的对象指针直接指向模板的地址.即两个对象公用一块内存地址 #import <Foundation/Foundation.h> int main(int argc, ...

  4. iOS中copy和strong修饰符的区别

    iOS中copy和strong修饰符的区别 //用copys修饰的生成的都是不可变的对象 ,如果调用可变类型方法的直接报错 @property(nonatomic,copy)NSString * cp ...

  5. iOS之copy、strong使用,block特性

    身边一同事,我印象在过去三个月,有两次因为使用“copy”修饰UIKit控件的属性,导致程序崩溃.他还一本正经的说我以前一直使用copy. 好了,到这里我们就不得不说说什么时候使用copy.我的印象中 ...

  6. iOS 图文并茂的带你了解深拷贝与浅拷贝

    一.概念与总结 1.浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针. 浅拷贝就是拷贝指 ...

  7. Python(2.7.6) copy - 浅拷贝与深拷贝

    Python 标准库的 copy 模块提供了对象拷贝的功能. copy 模块中有两个函数 copy 和 deepcopy,分别支持浅拷贝与深拷贝. copy_demo.py import copy c ...

  8. JavaScript 深拷贝(deep copy)和浅拷贝(shallow copy)

    参考: [进阶4-1期]详细解析赋值.浅拷贝和深拷贝的区别 How to differentiate between deep and shallow copies in JavaScript 在编程 ...

  9. OC copy mutableCopy, 浅拷贝,深拷贝

    copy与mutableCopy都是深拷贝,区别是mutableCopy拷贝出的对象是可变的. OC对象基本都是通过指针访问,所以一般情况下,通过对指针的赋值都是浅拷贝,即只是拷贝了一份对象的指针,对 ...

随机推荐

  1. Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带WebAPI文档生成功能

    背景: 上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任务完成后. 也不知怎么的,忽然就想给框架集成一下WebAPI文档功能,所以就动手了. 以为一天能搞完,结果,好几天过 ...

  2. 【社群话题分享】你的网站 HTTPS 了吗?

    每周三下午的话题活动是又拍云技术社群的优良传统-大家一起来看看这周都聊了些啥吧! 推荐阅读: 当 “HTTP” 先生遇上“S”小姐 了解 HTTPS,读这篇文章就够了 HTTPS 是什么? HTTPS ...

  3. 利用SQL Profiler 追踪数据库操作

    SQL Server 事件探查器 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果. 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤. SQL S ...

  4. MAC系统上安装Apache ab测试工具

    第一步:下载 Apache HTTP Server http://httpd.apache.org/download.cgi#apache24 第二步:安装brew工具 https://brew.sh ...

  5. Java微服务之Spring Boot on Docker

    本文学习前提:Java, Spring Boot, Docker, Spring Cloud 一.准备工作 1.1 安装Docker环境 这一部分请参考我的另一篇文章<ASP.NET Core ...

  6. ConfirmCancelBottomSheetDialog【确认取消底部对话框】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 继承BottomSheetDialog,实现简单的确认取消对话框样式. 效果图 代码分析 ConfirmCancelBottomSh ...

  7. SQL慢查询测试实践

    1.开启慢查询的目的 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 2.设置mysql慢查询 方法一:全局变量设置(临时生效) ...

  8. merge和rebase的区别

    前言 我从用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些资料,总结了下面的内容,如果有什么不妥的地方,还望指正,我一定虚心学习. merge和rebase ...

  9. 旅行商问题(Traveling Salesman Problem,TSP)的+Leapms线性规划模型及c++调用

    知识点 旅行商问题的线性规划模型旅行商问题的+Leapms模型及CPLEX求解C++调用+Leapms 旅行商问题 旅行商问题是一个重要的NP-难问题.一个旅行商人目前在城市1,他必须对其余n-1个城 ...

  10. 我的python渗透测试工具箱之自制netcat

    此工具的目的是实现在目标主机上的文件传输,控制命令行的功能,主要逻辑依靠python的subprocess模块.`sys`模块和`getopt`模块. 知识准备 studin和studut studi ...