首页 > 代码库 > 黑马程序员 内存管理之set

黑马程序员 内存管理之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

{

   [_car release];

   [super dealloc];

}

@end

@interface Car : NSObject

{

   int _speed;

}

@end

@implementation Car

@end

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;

}