美文网首页
objective-c 多对象内存管理

objective-c 多对象内存管理

作者: 一世长安乱 | 来源:发表于2018-04-10 16:36 被阅读0次

    当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 多对象内存管理

          本文链接:https://www.haomeiwen.com/subject/ewsnhftx.html