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

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)