retain/copy/assign的含义
来源:互联网 发布:南京品浪钓具淘宝店铺 编辑:程序博客网 时间:2024/05/21 04:00
举个例子可能更好理解点
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这段内存
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这段内存
0 0
- retain/copy/assign的含义
- retain/copy/assign的含义
- retain/copy/assign的含义
- iOS assign copy retain...含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- property中属性retain,copy,assign的含义分别是什么
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain 关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- iOS中assign、copy 、retain等关键字的含义
- 在Excel中对分数进行排名
- logback配置详解
- jstl标签
- UCGUI 控件作为对话框的客户区的子窗口
- Android SDK Android NDK Android Studio 官方下载地址
- retain/copy/assign的含义
- 仿QQ右拉显示菜单(一)
- 单例模式——C++实现自动释放单例类的实例
- 【ORACLE】事务与一致性:TRN TBL 和ITL基础
- Android技术分享,开源项目推荐,还有UI设计师推荐,新产品碰撞等等
- linux awk命令详解
- 【机器学习】k-近邻算法应用之手写数字识别
- 黑马程序员_反射、内省、注解
- WPF圆形头像显示