Objective-C 【copy和内存管理】
来源:互联网 发布:mac os 10.6.8下载dmg 编辑:程序博客网 时间:2024/04/29 19:27
代码:
// 1、浅拷贝// NSString *str1=@"lalala";// 这里不能写成上面的形式,因为"lalala"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对str1如何retain或release,得到的引用计数都是一个十分大的数字(maxIntValue) NSString *str1=[NSString stringWithFormat:@"abc"];// 使用stringWithFormat创建的NSString为变量,系统会进行引用计数 NSString *str2=[str1 copy]; NSLog(@"str1.retainCount = %tu,str2.retainCount = %tu",str1.retainCount,str2.retainCount);// 2015-09-17 16:49:10.246 copy 与内存管理[3932:278152] str1.retainCount = 2,str2.retainCount = 2// 输出结果是2,那是因为copy是浅拷贝,浅拷贝后str2和str1指针都指向同一个内存空间,并没有产生新的对象(这里相当于两个强指针指向该内存空间,引用计数为2) // 2、深拷贝 NSString *str3=[NSString stringWithFormat:@"laolao"]; NSMutableString *str4=[str3 mutableCopy]; NSLog(@"str3.retainCount = %tu,str4.retainCount = %tu",str3.retainCount,str4.retainCount);// 2015-09-17 17:03:49.495 copy 与内存管理[4044:284962] str3.retainCount = 1,str4.retainCount = 1// 输出结果是1,这是因为mutableCopy是深拷贝,str3和str4指针指向不同的内存空间,产生了新的对象,也就是产生了新的内存空间,原来的空间和新开辟的空间各有一个强指针指向。所以说引用计数都为1
8 0
- Objective-C 【copy和内存管理】
- Objective-c的内存管理问题(copy和retain)
- Objective-C Copy的概念、入门和内存管理
- Objective-c 的 内存管理和@property strong,weak,assign,copy,retain等关键字介绍
- Objective-C 内存管理retain和release
- Objective-C内存管理和原理
- Objective-C内存管理和异常
- Objective C----手动管理内存和自动管理内存
- objective-c内存管理
- Objective-c 内存管理
- Objective-C内存管理~~
- Objective-C内存管理
- Objective-C 内存管理
- Objective-C 内存管理
- Objective-C 内存管理
- Objective-C内存管理
- objective-c 内存管理
- objective-c 内存管理
- java 堆中新生代老年代
- Linux的常用部分指令
- SQOOP解决class org.apache.sqoop.Sqoop
- JTAG调试原理
- Android LayerDrawable
- Objective-C 【copy和内存管理】
- 欧几里得模板以及扩展欧几里得
- LeetCode(75) Sort Colors
- 通用makefile
- lib和obj的差别
- 利用pthread_cond_timedwait实现sleep
- hp实训之测试(第四周)
- shell脚本 集成测试多个UiAutomator case类
- AngularJS进阶(六)AngularJS+BootStrap实现弹出对话框