OC基础-内存管理小结(手动)

来源:互联网 发布:淘宝v1贷款口子 编辑:程序博客网 时间:2024/05/29 19:28
一 计数器的基本操作
1. retain : 计数器+1
2. release : 计数器-1
3. retainCount : 获得对象当前的计数器值



二 set方法的内存管理
1. set方法的实现
- (void)setCar:(Car *)car
{
    if(_car != car)
    {
        [_car release];
        _car = [car retain];
    }
}

2. dealloc方法的实现(不要直接调用dealloc,它是系统调用的)
- (void)dealloc
{
    [_car release];
    [super dealloc];
}



三 @property参数
1. OC对象类型
@property (nonatomic, retain) 类名 *属性名;   //用这个来代替第一点的set方法
@property (nonatomic, retain) Car *car;    // 例子
@property (nonatomic, retain) id car;     // id不带*号,因为id本身内部就带有星号
// 被retain过的属性,必须在dealloc方法中release属性
- (void)dealloc
{
    [_car release];
    [super dealloc];
}

2. 非OC对象类型
@property (nonatomic, assign) 基本类型 属性名;  // (int/float/enum/struct)
@property (nonatomic, assign) int age;



四 autorelease
1. 系统自带的方法,如果不包含alloc/new/copy,那么这些方法返回的对象都是已经autorelease过的
[NSString stringWithFormat:参数];
[NSDate date];

2. 开发中经常写一些类方法快速创建一个autorelease的对象
注意:创建的时候不要直接使用类名,用self








0 0