码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员 内存管理之set

时间:2014-05-08 10:18:57      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:int   c   set   使用   管理   new   

/*

   内存管理原则:

   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;

}

黑马程序员 内存管理之set,布布扣,bubuko.com

黑马程序员 内存管理之set

标签:int   c   set   使用   管理   new   

原文地址:http://www.cnblogs.com/wtbkof/p/3715503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!