//
// main.m
// 手动内存管理类的相互引用问题
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person * p = [[Person alloc] init];
Car * car = [[Car alloc] init];
[p setCar:car];
[car setPerson:p];
[car run];
[car release];
[p release];
}
return 0;
}
//
// Person.h
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
@property(nonatomic,retain) Car * car;
- (void)eat;
@end
//
// Person.m
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)dealloc
{
[super dealloc];
[_car release];
NSLog(@"Person 被销毁了");
}
- (void)eat
{
NSLog(@"人吃东西才有力气");
}
@end
//
// Car.h
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
@class Person;
@interface Car : NSObject
//如果你的程序出现相互引用问题,那么一端要改成assign方式,不能够使用retain(回导致内存泄漏问题)
@property (nonatomic,assign)Person * person;
- (void)run;
@end
//
// Car.m
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Car.h"
#import "Person.h"
@implementation Car
- (void)dealloc
{
[super dealloc];
// [_person release];
NSLog(@"Car 被销毁了");
}
- (void)run
{
// [_person eat];
[_person eat];
}
@end
// main.m
// 手动内存管理类的相互引用问题
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person * p = [[Person alloc] init];
Car * car = [[Car alloc] init];
[p setCar:car];
[car setPerson:p];
[car run];
[car release];
[p release];
}
return 0;
}
//
// Person.h
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
@property(nonatomic,retain) Car * car;
- (void)eat;
@end
//
// Person.m
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)dealloc
{
[super dealloc];
[_car release];
NSLog(@"Person 被销毁了");
}
- (void)eat
{
NSLog(@"人吃东西才有力气");
}
@end
//
// Car.h
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
@class Person;
@interface Car : NSObject
//如果你的程序出现相互引用问题,那么一端要改成assign方式,不能够使用retain(回导致内存泄漏问题)
@property (nonatomic,assign)Person * person;
- (void)run;
@end
//
// Car.m
// 手动内存管理
//
// Created by admin on 15/8/5.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Car.h"
#import "Person.h"
@implementation Car
- (void)dealloc
{
[super dealloc];
// [_person release];
NSLog(@"Car 被销毁了");
}
- (void)run
{
// [_person eat];
[_person eat];
}
@end