OC对象的内存管理
2014-02-22 19:39
253 查看
一. 原理
对于任何继承了NSObject的对象,都有一个与之关联的整形变量,称为引用计数器;只有计数器的值为0的时候,OC就回收该对象,否则永不回收。
1. 创建对象时,如使用alloc ,new , copy,引用计数器的值为1
2. 当使用release方法释放时,计数器的值减1
3. 当使用retain方法时,计数器的值加1
4. 当对象被回收时候,自动调用对象的dealloc方法,
5. 使用retainCount方法来获取引用计数器的值
二. 防止内存泄露标准示例写法:
以上对于内存泄露的处理,可直接用@property参数retain关键字简写为:
对于任何继承了NSObject的对象,都有一个与之关联的整形变量,称为引用计数器;只有计数器的值为0的时候,OC就回收该对象,否则永不回收。
1. 创建对象时,如使用alloc ,new , copy,引用计数器的值为1
2. 当使用release方法释放时,计数器的值减1
3. 当使用retain方法时,计数器的值加1
4. 当对象被回收时候,自动调用对象的dealloc方法,
5. 使用retainCount方法来获取引用计数器的值
二. 防止内存泄露标准示例写法:
@class Book; @interface Student : NSObject @property Book *book; @end
#include "Book.h" @implementation Student //该写法能完美防止内存泄露 - (void)setBook:(Book *)book{ if(_book!=book){ [_book release]; _book = [book retain]; } } - (Book *)book{ return _book; } - (void)dealloc{ [_book release];//释放_book对象 [super dealloc]; } @end
以上对于内存泄露的处理,可直接用@property参数retain关键字简写为:
@class Book; @interface Student : NSObject @property (retain) Book *book;//OC会在set方法中作以上检查 @end
相关文章推荐
- oc加强day5-NSFileManger、NSPoint与CGPoint等简单结构体、简单数据类型的封装、集合对象的内存管理、copy、单列模式
- 第05天OC语言(08):多个对象内存管理练习分析
- OC基础—内存管理之多对象内存管理
- 每日一练:OC中的对象概念-堆的内存管理
- oc-内存管理之自动释放--我自动释放了我使用的所有对象,但程序占用内存还是偏高,为什么?
- OC_内存管理(二)对象复制、循环引用问题、自动释放池
- oc-31-多对象的内存管理
- 小白学开发(iOS)OC_ 单个对象的内存管理(2015-08-02)
- 第05天OC语言(05):多对象内存管理
- oc对象的内存管理
- OC中内存管理(ARC)--注意点及单个对象处理
- 【ObjC那点儿事儿】OC对象内存管理 MRR
- 第05天OC语言(09):多个对象内存管理练习实现
- 【ObjC那点儿事儿】OC对象内存管理 ARC
- 黑马程序员---OC学习笔记之集合对象的内存管理
- 第05天OC语言(03):单个对象内存管理
- OC学习笔记之OC对象的内存管理
- OC学习笔记之OC对象的内存管理二
- 小白学开发(iOS)OC_多个对象的内存管理(2015-08-03)
- 黑马程序员_OC基础10_内存管理(多对象)