iOS内存管理之引用计数初识
来源:互联网 发布:便携网络图形图像 编辑:程序博客网 时间:2024/06/14 18:51
@property (nonatomic,strong) NSString *para1;
@property (nonatomic,copy) NSString *para2;
@property (nonatomic,strong) NSMutableString *para3;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.para1 =@"meng";
self.para2 =@"zq";
self.para3 = [[NSMutableStringalloc] initWithString:@"meng123"];
NSMutableArray *array = [[NSMutableArrayalloc] initWithObjects:self.para1,self.para2,nil];
[array addObject:self.para3];
//para1的指针地址,para1对象的地址
NSLog(@"%p, %p", &_para1,self.para1);
//para2的指针地址,para2对象的地址
NSLog(@"%p, %p", &_para2,self.para2);
NSLog(@"%p, %p", &_para3,self.para3);
//与para1、para2对象的地址相同,说明是浅拷贝
NSLog(@"%p, %p, %p", [arrayobjectAtIndex:0], [arrayobjectAtIndex:1], [arrayobjectAtIndex:2]);
self.para1 =@"";
self.para2 =@"";
[self.para3appendString:@"456"];
//与para1、para2对象的地址相同,说明是浅拷贝
NSLog(@"****%p, %p****, ****%p", [arrayobjectAtIndex:0], [arrayobjectAtIndex:1], [arrayobjectAtIndex:2]);
//但是打印的结果相同,说明para1和para2改变的是他们的副本,而保存在数组里面的是它们的原值
NSLog(@"%@, %@, %@", [arrayobjectAtIndex:0], [arrayobjectAtIndex:1], [arrayobjectAtIndex:2]);
//指针地址没变,但是指针指向的对象的地址变了,说明para1盒para2改变的只是它的副本
NSLog(@"second %p, %p", &_para1,self.para1);
NSLog(@"second %p, %p", &_para2,self.para2);
//指针地址没变,指针指向的对象的地址也没变,说明是浅拷贝
NSLog(@"second %p, %p", &_para3,self.para3);
//把para3置空,检验数组是否还有para3
//执行次代码之后para3仍然存活,因为数组还在引用它。但我们不能假设它一定存活,释放它之后仍然打印它的地址是不好的习惯
self.para3 =nil;
NSLog(@"%p",self.para3);
//因为数组在para3上调用了retain,以期继续保留para3,所以它的引用计数为2,当self.para3释放之后,数组仍然拥有para3
NSLog(@"%p", [arrayobjectAtIndex:2]);
}
- iOS内存管理之引用计数初识
- 内存管理之引用计数
- 内存管理之引用计数
- 内存管理之引用计数
- IOS内存管理--手动引用计数实现
- OC内存管理之—引用计数
- Objective-C内存管理之引用计数
- Cocos2dx内存管理之引用计数分析
- IOS开发(40)之objective-C 的内存管理之-引用计数
- iOS内存管理系列之一:对象所有权与引用计数
- iOS内存管理系列之一:对象所有权与引用计数
- iOS 下ARC关于内存管理的引用计数问题
- iOS-学习笔记-内存管理 (1)自动引用计数
- ios_oc 内存管理(引用计数)
- 引用计数与内存管理
- 内存管理总结-引用计数
- 引用计数式内存管理
- iOS之引用计数
- ubuntu环境下搭建和配置使用nginx服务器
- 关于类的反射相关学习
- SHIRO工作流程及原理及在Spring中集成
- 几个coding相关的电子杂志阅读
- 计算机图形学学习笔记 第三章 光栅
- iOS内存管理之引用计数初识
- 欢迎使用CSDN-markdown编辑器
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
- CSS3 新特性
- UART
- Haproxy
- HTML笔记(九)bootstrap之导航栏
- iOS 数组中replaceObjectAtIndex方法
- 欢迎使用CSDN-markdown编辑器