黑马程序员技术交流社区
标题:
oc对象的管理,没事看看值得学习!
[打印本页]
作者:
穷屌丝一枚
时间:
2015-9-9 00:12
标题:
oc对象的管理,没事看看值得学习!
OC对象的内存管理
一. 原理
对于任何继承了NSObject的对象,都有一个与之关联的整形变量,称为引用计数器;只有计数器的值为0的时候,OC就回收该对象,否则永不回收。
1. 创建对象时,如使用alloc ,new , copy,引用计数器的值为1
2. 当使用release方法释放时,计数器的值减1
3. 当使用retain方法时,计数器的值加1
4. 当对象被回收时候,自动调用对象的dealloc方法,
5. 使用retainCount方法来获取引用计数器的值
二. 防止内存泄露标准示例写法:
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
@class Book;
@interface Student : NSObject
@property Book *book;
@end
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
#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
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2