文档章节

retain/copy/assign的含义

markqk
 markqk
发布于 2015/02/02 18:03
字数 280
阅读 13
收藏 0

讲一下retain/copy/assign的含义

NSString *pt = [[NSString alloc] initWithString:@"abc"];

上面一段代码会执行以下两个动作
1 在堆上分配一段内存用来存储@"abc"  比如:内存地址为:0X1111 内容为 "abc"
2 在栈上分配一段内存用来存储pt  比如:地址为:0Xaaaa 内容自然为0X1111  
下面分别看下assign retain copy
assign的情况:NSString *newPt = [pt assing];  
此时newPt和pt完全相同 地址都是0Xaaaa  内容为0X1111  即newPt只是pt的别名,对任何一个操作就等于对另一个操作。 因此retainCount不需要增加。
retain的情况:NSString *newPt = [pt retain];  
此时newPt的地址不再为0Xaaaa,可能为0Xaabb 但是内容依然为0X1111。 因此newPt 和 pt 都可以管理"abc"所在的内存。因此 retainCount需要增加1  
copy的情况:NSString *newPt = [pt copy];
此时会在堆上重新开辟一段内存存放@"abc" 比如0X1122 内容为@"abc 同时会在栈上为newPt分配空间 比如地址:0Xaacc 内容为0X1122 因此retainCount增加1供newPt来管理0X1122这段内存

© 著作权归作者所有

markqk
粉丝 0
博文 134
码字总数 61974
作品 0
朝阳
程序员
私信 提问
iOS中assign、copy 、retain等关键字的含义

assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一...

Im刘亚芳
2014/12/02
0
0
iOS中assign、copy 、retain等关键字的含义

assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一...

CEOIOS
2015/04/17
0
0
Objective-C Property 和 Synthesize

Objective-C中的@property、@synthesize及点语法都是与两个函数有关的,一是setter函数,另一个是getter函数 以前我们是这样来定义setter与getter函数的 @interface Dog:NSObject { int age;...

子非鱼你造么
2015/05/17
0
0
Object-c @Property

http://blog.csdn.net/dqjyong/article/details/7668601(原博客) 以下是对原博客的整理 导航: 读写属性:(readwrite/readonly)以及(getter=name)、(setter=name) setter语意:(assig...

gaoios
2014/01/04
0
0
atomic与nonatomic,assign,copy与retain的定义和区别

Objective-C语言关键词,@property与@synthesize配对使用。 声明property的语法为:@property (参数1,参数2) 类型 名字; 功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方...

SmartOS
2013/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spark Streaming的优化之路——从Receiver到Direct模式

          作者:个推数据研发工程师 学长 1 业务背景 随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来...

个推
今天
3
0
壮丽70年·奋斗新时代|蒸妙集团熏蒸中会阴熏蒸的神奇好处

聚结相合之处为会。会阴居两阴间,为督、任、冲三脉的起点,三脉背出两阴之间,会聚阴部,因名会阴。会阴,经穴名。出《针灸甲乙经》。会阴别名屏翳、下极、金门。属任脉。在会阴部,男性当阴...

公益传承
今天
2
0
pentaho-kettle-8.2.0.0-R源码开发环境搭建

1.从Kettle官网下载源码,本文使用的是pentaho-kettle-8.2.0.0-R 下载地址:https://codeload.github.com/pentaho/pentaho-kettle/zip/8.2.0.0-R 2.打开eclipse,选择一个新的工作空间,然后设...

gq_2010
今天
1
0
lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
5
0
通过四道常问面试题,带你了解什么是数据库分库分表

编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展。 其次:本文为纯干货,建议先转发...

老道士
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部