美文网首页
四十四、内存管理之(三)MRC

四十四、内存管理之(三)MRC

作者: yqc5521 | 来源:发表于2019-05-14 13:51 被阅读0次

    MRC核心代码
    如果成员变量是基本数据类型

    - (void)setDog:(MJDog *)dog
    {
        if (_dog != dog) {
            [_dog release];
            _dog = [dog retain];
        }
    } 
    - (void)dealloc
    {
        self.dog = nil;  
        [super dealloc];
    }
    
    

    基本数据类型用assign修饰,比如age属性,就是简单赋值,不会涉及到引用计数。

    - (void)setAge:(Int )age
    {
        _age = age;
    }
    

    如果需要系统帮你实现基本数据类型的setter和getter,可以用@synthesize关键字。
    @synthesize age = _age;
    系统会 给你生成age的setter和getter

    修饰对象类型是,可以用retain关键字
    retain作用:生成setter和getter方法的实现,并在MRC中,有引用计数的处理。
    但是在MRC中,在dealloc函数中,还是将成员变量置为nil。

    - (void)setDog:(MJDog *)dog
    {
        if (_dog != dog) {
            [_dog release];
            _dog = [dog retain];
        }
    } 
    - (MJDog *) dog{
        return _dog;
    }
    

    相关文章

      网友评论

          本文标题:四十四、内存管理之(三)MRC

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