objective-c 多对象内存管理

当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];
}

你可能感兴趣的:(objective-c 多对象内存管理)