//
// main.m
// OC2_ARC MRC混合编程
//
// Created by zhangxueming on 15/6/19.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
//-fno-objc-arc BuildPhases 下的 complle Sources (Compiler Flags) person.m 跟 dog.m 添加 -fno-objc-arc
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *xiaoHua = [[Person alloc] init];
Dog *dog = [[Dog alloc] init];
xiaoHua.dog = dog;
}
return ;
}
//
// Dog.h
// OC6_复合类的类存管理
//
// Created by zhangxueming on 15/6/18.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Dog : NSObject
@property (copy, nonatomic) NSString *name;
@property (assign,nonatomic) NSInteger age;
@end
//
// Dog.m
// OC6_复合类的类存管理
//
// Created by zhangxueming on 15/6/18.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#import "Dog.h"
@implementation Dog
- (void)dealloc
{
NSLog(@"%@: dog name is release!!!", [self class]);
[_name release];
[super dealloc];
}
@end
//
// Person.h
// OC6_复合类的类存管理
//
// Created by zhangxueming on 15/6/18.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Dog.h"
@interface Person : NSObject
@property (retain, nonatomic) Dog *dog;
@end
//
// Person.m
// OC6_复合类的类存管理
//
// Created by zhangxueming on 15/6/18.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)dealloc
{
NSLog(@"%@:dog is release", [self class]);
[_dog release];
[super dealloc];
}
@end