当A对象想使用B对象一定要对B对象进行一次retain,这样才能保证A对象存在B对象也存在,也就是说这样才能保证无论在什么时候在A对象中都可以使用B对象
当A对象释放的时候,一定要对B对应进行一次release,这样才能保证A对象释放了,B对象也会随之释放,避免内存泄漏
有增就有减
A对象中
//setter
- (void)setBClass:(BClass *)bclass
{
//固定写法
//只有传入的B类和之前的B类不同才需要使用release和retain
if(_bclass != bclass)
{
//将之前的B类释放,引用器-1
[_bclass release];
//对B类的引用器+1
/*
[bclass retain];
_bclass = bclass;
*/
//retain不仅会对引用计数器+1,而且还会返回当前对象
_bclass = [bclass retain];
}
}
//getter
- (BClass *)bclass
{
return _bclass;
}
//重写dealloc
//重写dealloc就必须调用[super dealloc],并且放在最后面调用
- (void)dealloc
{
//创建一个对象默认引用计数器的值就是1
//通过指针变量给指针变量发送一条release消息
//对象接收到release消息,引用计数器就会-1
//只要一个对象的引用计数器为0,系统就会释放对象
//A对象释放了,B对象也要释放
[_bclass release];
[super dealloc];
}