A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马