/*
内存管理原则:
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;
}
原文地址:http://www.cnblogs.com/wtbkof/p/3715503.html