set方法的内存管理细节

一、多个对象之间的内存管理

 1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)

 2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)
 3.谁retain,谁release

 4.谁alloc,谁release

二、set方法的内存管理

内存管理代码规范:
1.只要调用了alloc,必须有release(autorelease)
   对象不是通过alloc产生的,就不需要release
 
 2.set方法的代码规范
 1> 基本数据类型:直接复制
 

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

 2> OC对象类型
 

- (void)setCar:(Car *)car
 {
    // 1.先判断是不是新传进来对象
    if ( car != _car )
    {
        // 2.对旧对象做一次release
        [_car release];
 
        // 3.对新对象做一次retain
        _car = [car retain];
    }
 }


 3.dealloc方法的代码规范
 1> 一定要[super dealloc],而且放到最后面
 2> 对self(当前)所拥有的其他对象做一次release

 - (void)dealloc
 {
    [_car release];
    [super dealloc];
 }
原文地址:https://www.cnblogs.com/fengmin/p/6141977.html