参考:08-09、MRC中A对象与B对象的“循环retain”的解决方案
Person.h
#import <Foundation/Foundation.h>
@class Dog;
@interface Person : NSObject
// MRC, A对象想拥有B对象, 需要对B对象进行一次retain
// A对象不用B对象了, 需要对B对象进行一次release
// property的时候进行retain, dealloc的时候进行release
// ARC, A对象想拥有B对象, 那么就需要用一个强指针指向B对象
// A对象不用B对象了, 什么都不需要做, 编译器会自动帮我们做
// 在ARC中保存一个对象用strong, 相当于MRC中的retain
@property(nonatomic, strong)Dog *dog;
@end
Dog.h
#import <Foundation/Foundation.h>
@class Person;
@interface Dog : NSObject
//@property(nonatomic, strong)Person *owner;
//@property(nonatomic, assign)Person *owner;
// 在ARC中如果保存对象不要用assign, 用weak
// assign是专门用于保存基本数据类型的, 如果保存对象用weak
@property(nonatomic, weak)Person *owner;
@end