一 计数器的基本操作
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
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