/*
内存管理原则:
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;