黑马程序员---OC学习笔记之集合对象的内存管理
来源:互联网 发布:c语言批量修改文件名 编辑:程序博客网 时间:2024/05/22 14:32
——Java培训、Android培训、iOS培训、.Net培训——–
1、集合对象的内存管理
1)当一个对象加入到集合中,那么对该对象的【引用计数会+1】
2)当集合被销毁时,集合会向集合中的元素发送release消息
3)当集合销毁时,其中的对象不一定被销毁。如果其中的元素的引用计数不为1,那么即使发送了release消息 ,该对象也不会被销毁的。
2、集合对象的内存管理举例
【需要把项目从ARC模式切换到MRC模式】
//定义一个Person类用于测试,不需要成员变量#pragma mark Person类声明部分@interface Person : NSObject@end#pragma mark Person类实现部分@implementation Person//重写dealloc方法- (void)dealloc{ NSLog(@"人挂了..."); [super dealloc];}@end
1)把一个Person对象加入到NSArray中
@autoreleasepool { //定义一个Person对象 Person *p = [Person new]; NSLog(@"p 计数器值:%ld",[p retainCount]); NSArray *arr = [NSArray arrayWithObject:p]; NSLog(@"p 计数器值:%ld",[p retainCount]); [p release]; }
【打印结果】
2015-10-09 08:23:05.487 集合对象的内存管理[596:303] p 计数器值:1
2015-10-09 08:23:05.489 集合对象的内存管理[596:303] p 计数器值:2
2015-10-09 08:23:05.489 集合对象的内存管理[596:303] 人挂了…
【分析结果】
1)对象p添加到NSArray后计数器+1,此时对象p的计数器值为2
2)对象p自己发送了一个release消息,此时计数器值为1,但是自动释放池销毁时,对象p没有加入到自动释放池,也被销毁了,说明数组arr在销毁时向【对象p发送了一次release消息】。
0 0
- 黑马程序员---OC学习笔记之集合对象的内存管理
- 黑马程序员-OC学习笔记-----内存管理
- OC学习笔记之OC对象的内存管理
- OC学习笔记之OC对象的内存管理二
- 黑马程序员-OC的内存管理笔记
- 黑马程序员——Objective--C笔记Foundation之NSArray,集合对象的内存管理
- 黑马程序员- IOS学习笔记-OC内存管理学习
- 黑马程序员-IOS学习笔记 OC 内存管理
- 黑马程序员——ios学习笔记 OC 内存管理
- 黑马程序员----oc加强笔记----内存管理
- 黑马程序员 OC------内存管理学习
- 黑马程序员--学习OC加强内存管理
- 黑马程序员之ios学习总结——11 OC语言的内存管理1
- 黑马程序员之ios学习总结——12 OC语言的内存管理2
- OC学习笔记之OC内存管理
- [黑马程序员]14[OC语言]OC内存管理部分学习笔记总结
- 黑马程序员 OC中的内存管理及MRC和ARC单个对象的内存管理问题
- 黑马程序员----Objective-C学习笔记之单个对象内存管理
- C#高级篇(一)---string、delegate 、Action 、Func、Lambda、事件
- C#开发微信门户及应用(1)--开始使用微信接口
- c# 加密解密
- iOS runtime运行时机制
- 【Visual C++ 2010】Win32程序如何实现复杂的模态对话框
- 黑马程序员---OC学习笔记之集合对象的内存管理
- java拾遗之关键字final
- C#开发微信门户及应用(2)--微信消息的处理和应答
- 预设Prefab与实例Instantiate的基本使用
- for each和for循环的对比
- iptables 查看客户端流量情况
- adaboost haar分类器训练1(opencv2.4.10版本)
- shell中pushd和popd
- java学习---环境搭建