天天看点

黑马程序员 内存管理之set

/*

   内存管理原则:

   1.谁alloc,new或copy,谁就进行一次release

   2.谁retain,谁release

  */

#import <foundation/foundation.h>

@interface person : nsobject

  {

   car * _car;

   int _age;

}

 - (void)setcar:(car *)car;

@end

@implementation person

 - (void)setcar:(car *)car

{

   // 说明使用car对象增加了一位,当一位不再使用car时,可以保证car对象不会被销毁

   //  _car = [car retain];

  if(_car != car)

 {

   // 当不再使用旧车时,要进行一次release,不然会出现内存泄露

   [_car release];

  // 谁用这辆车必须进行一次retain

   _car = [car retain];

 }

- (void)dealloc

   [super dealloc];

@interface car : nsobject

   int _speed;

@implementation car

int main()

 person *p = [[person alloc] init];

 car *c1 = [[car alloc] init];

 // p拥有了一辆车

 p.car = c1;

 car *c2 = [[car alloc] init];

 // p 不再使用c1(旧车),换成使用c2(新车)

 p.car = c2;

 // c1 alloc,c1就进行一次release

 [c1 release];

 // c2 alloc,c2就进行一次release 

 [c2 release];

  // p alloc,p就进行一次release

 [p release];

 return 0;