1. 程式人生 > >OC基礎-記憶體管理小結(手動)

OC基礎-記憶體管理小結(手動)

一 計數器的基本操作
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